Docker 简单部署

作者: Suria007 | 来源:发表于2023-06-11 10:39 被阅读0次

我使用的 windows,前端使用 React 框架,后端使用 Flask 框架。

安装

官网下载网址,下载 Docker Desktop。

部署 Flask 项目

在 app.py 同级目录下创建 Dockfile 文件。

FROM python:3.9 as build
WORKDIR /app
COPY . .
RUN pip3 install -r requirements.txt
EXPOSE 5000
CMD [ "python3","app.py" ]

第一行用 FROM 命令制定一个基础镜像,省去很多软件安装配置。

WORKDIR 指定之后所有 Docker 命令的工作路径,如果路径不存在,Docker 会自动帮你创建。

COPY 将所有的程序拷贝到 Docker 镜像中。COPY <本地路径> <目标路径>. 代表程序根目录下的所有文件;第二个参数代表 Docker 镜像中的路径,这里的 . 代表当前的工作路径,也就是之前指定的 app 目录。

RUN 允许我们在创建镜像时运行任意的 shell 命令。

EXPOSE 设置容器对外暴露的端口号为 5000。

使用 CMD 指定当 Docker 容器运行起来以后要执行的命令。

RUN 是创建镜像的时候使用的,而 CMD 是运行容器的时候使用的。

接下来在项目终端,使用 docker build 创建一个镜像。

docker build -t flask-backend .

-t:tag/标签 指定镜像的名字
. 告诉 docker 应该在当前目录下寻找这个 Dockerfile。

第一次调用 docker build 会比较慢,因为 Docker 会下载必要的镜像文件,然后一行行运行指令,但是之后就会比较快,因为 Docker 会缓存之前的每个操作。

docker run -p 5000:5000 -d flask-backend

-p 会将容器上的某个端口映射到本地主机上,前面是主机端口,后面是容器端口号
-d 让容器在后台运行,这样容器的输出不会直接显示在控制台

容器命令行指令

删除 Docker 容器,会连带着将其中的数据也一并删除。如果想保留数据,可以使用 Docker 提供的 volume 数据卷。可以把它当做一个在本地主机和不同容器中共享的文件夹。

// 创建数据卷
docker volume create 数据卷名
// 启动 docker 并把数据挂在到指定路径下
docker run -dp 5000:5000 -v 数据卷名:/etc/finance flask-backend

将数据卷名挂载到了 /etc/finance 路径下,向这个路径写入的任何数据都会被永久地保存在这个数据卷中。

前端 Dockerfile 内容

# 基于Node
FROM node:14 as build
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build

# 基于nginx
FROM nginx:latest
EXPOSE 80
COPY --from=build /app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf

在项目总文件夹下创建 docker.yml 文件

version: "3.8"
services:
  frontend:
    image: frontend
    ports:
      - "80:80"
  backend:
    image: flask-backend
    ports:
      - "5000:5000"
    volumes:
      - ./flaskBackend/static:/static

在终端运行 docker compose up 就能把两个服务都起来。

简化版命令合集
就是这几个文件都放好位置,在终端运行,先创建前后端的镜像,然后直接使用 docker.yml 一并运行起来。

// 前端项目目录下
docker build -t frontend .
// 后端项目目录下
docker build -t flask-backend .
// 总目录下
docker compose up

最终在网页中输入 http//localhost:80/ 就能看到前端页面了。

如果修改了本地的文件,我目前使用的方法是重新在该项目下 build 一个新的项目,然后修改 docker.yml 中指定的镜像名,直接在终端 docker compose up

相关文章

网友评论

    本文标题:Docker 简单部署

    本文链接:https://www.haomeiwen.com/subject/naatydtx.html