CICD 是 持续集成(Continuous Integration, CI) 和 持续交付/部署(Continuous Delivery/Deployment, CD) 的缩写,广泛应用于软件开发流程中,以提高软件交付的效率、质量和可靠性。
CI主要是靠自动化工具,将每一次推送上来的代码进行自动化测试,确保正确
CD是快速部署

Docker 在 CICD 的典型流程

CI 阶段:

编写 Dockerfile 定义应用环境。
构建 Docker 镜像并运行单元测试、集成测试。
如果测试通过,将镜像打标签(如 1.0.0)并推送到镜像仓库。
CD 阶段:

从镜像仓库拉取镜像。
使用容器编排工具(如 Kubernetes 或 Docker Compose)将镜像部署到测试环境。
验证后,再部署到生产环境。

dockerfile

Dockerfile 是一个用来定义 Docker 镜像 的文本文件。它包含了一系列的指令,每个指令描述了如何配置和构建镜像的过程。

通过 Dockerfile,可以自动化地生成一个 Docker 镜像,而无需手动安装操作系统、依赖项或应用程序。

构建一个 Python Web 应用程序的镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 使用 Python 3.10-slim 作为基础镜像
FROM python:3.10-slim AS base
# 设置工作目录
WORKDIR /app
# 复制项目代码
COPY . .
# 安装 PDM
RUN pip install pdm -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装项目依赖
RUN pdm config pypi.url https://pypi.tuna.tsinghua.edu.cn/simple
RUN pdm install --prod --no-self
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["pdm", "run", "fastapi", "run"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 使用 Node.js 20-alpine 镜像作为基础镜像 (docker hub)
FROM node:20-alpine AS build
# 设置工作目录
WORKDIR /app/
# 更换 npm 源为淘宝源(或其他国内源)
RUN npm config set registry https://registry.npmmirror.com
# 安装 pnpm
RUN npm install -g pnpm
RUN pnpm config set registry https://registry.npmmirror.com
# 添加 上下文(宿主机)的 所有文件到 build 容器的 /app 目录
COPY . .
# 使用 pnpm 安装依赖并构建 前端 应用
RUN pnpm install && pnpm run build
# 删除不必要的文件和目录
RUN rm -rf /app/node_modules
# 使用 Nginx 镜像来托管 React 应用
FROM nginx:alpine
# 复制 build 容器的 构建好的 前端 应用到 Nginx 默认的静态文件目录
COPY --from=build /app/dist /usr/share/nginx/html
# 复制 上下文中 自定义的 Nginx 配置文件
COPY nginx_front.conf /etc/nginx/conf.d/default.conf
# 暴露端口号
EXPOSE 20001
# 启动 Nginx 服务器,这个命令在容器中运行,而非在制作镜像时运行
CMD ["nginx", "-g", "daemon off;"]

构建镜像
docker build -t my-app .

暴露服务
docker run -d -p 8080:80 nginx

等我要做前后端项目了就用vercel部署