1.docker安装 我安装的是docker desktop
安装完成后
$ docker -v
$ Docker version 26.0.0, build 2ae903e
同时也可以打开图形界面看
2.前端打包
配置Dockerfile 放在前端项目根目录
配置nginx.conf 放在前端项目根目录
---Dockerfile
# 设置Node.js版本
FROM node:20.12.2
# 设置容器工作目录
WORKDIR /app
# 复制package.json文件和package-lock.json文件到容器工作目录
COPY . /app
# 安装项目依赖
RUN yarn install
# 构建前端项目
RUN yarn build
# 使用nginx镜像作为基础镜像
FROM nginx:alpine
WORKDIR /app
# 替换nginx配置 将项目根目录nginx.conf 拷贝到nginx配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 将构建好的前端项目复制到nginx服务器的html目录下
COPY --from=0 /app/dist /usr/share/nginx/html
# 暴露80端口
EXPOSE 80
# 启动nginx,并且指定nginx在前台运行
CMD ["nginx", "-g", "daemon off;"]
---nginx.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
## 这部分是vite配置了压缩的 没有的直接去掉
#开启gzip功能
gzip on;
#开启gzip静态压缩功能
gzip_static on;
#gzip缓存大小
gzip_buffers 4 16k;
#gzip http版本
gzip_http_version 1.1;
#gzip 压缩级别 1-10
gzip_comp_level 5;
#gzip 压缩类型
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,**一定要开启,不开启读取不到.gz结尾的压缩文件**
gzip_vary on;
## 这部分是vite配置了压缩的 没有的直接去掉
access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 新增下面这句,其他是默认nginx配置
# 解决部分前端框架的路由问题,在浏览器刷新报错404
#try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
## 构建镜像 Dockerfile 同级执行
$ docker build -t web:1.0 .
它会按照顺序去执行命令 错误的话就会停止 常见错误目录不正确 文件没拷贝上 命令和package.json不对应
构建完成后会提示
View build details: docker-desktop://dashboard/build/default/default/blmwxek49rnabffvm8vq602mf
运行镜像
$ docker run --name web1.0 -d -p 8080:80 web:1.0
运行完则可以访问。
其中也可以通过图形化界面或者docker命令查看问题
docker ps -a
docker ps -a pid
### 获取容器的元数据
docker inspect
##
docker stats –no-stream
### 显示容器使用的系统资源,默认情况下,stats 命令会每隔1秒钟刷新一次输出的内容直到你按下ctrl + C
docker stats
3.flask打包
配置Dockerfile 放在项目根目录
配置requirements.txt 放在项目根目录
---app.py
app.run(host="0.0.0.0", port=5000) 设置此项保证外部可以访问
---Dockerfile
# 使用Python 3作为基础镜像
FROM python:3
# 设置 pip 镜像源为阿里云镜像
ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
# 设置镜像源不验证 SSL
ENV PIP_TRUSTED_HOST=mirrors.aliyun.com
# 设置工作目录
WORKDIR /app
# 复制项目文件到容器中
COPY . /app
# 安装项目依赖项
RUN pip install --no-cache-dir -r requirements.txt
# 设置环境变量
ENV FLASK_APP=app.py
# 定义容器启动命令 app.py host设置在里面
CMD [ "python", "app.py"]
---requirements.txt
flask==3.0.3
构建镜像
$ docker build -t flaskapitest:1.0 .
运行镜像
$ docker run --name flaskapitest -d -p 5555:5000 flaskapitest:1.0
图形化界面;
标签:项目,flask,app,nginx,html,gzip,镜像,docker From: https://www.cnblogs.com/shuangzikun/p/18182716