Docker Compose 部署多个 Vue 项目

在现代的 Web 开发中,Vue 是一种非常受欢迎的前端框架。随着项目数量的增加,我们可能需要同时部署多个 Vue 项目。使用 Docker Compose,我们可以轻松地管理和部署这些项目,并确保它们之间的依赖关系被正确地处理。

Docker Compose 简介

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。它使用一个 YAML 文件来配置应用程序的服务,然后使用一个命令来启动、停止和重建这些服务。

准备工作

在开始之前,我们需要确保已经安装了 Docker 和 Docker Compose。可以在终端中运行以下命令来验证安装是否完成:

docker --version
docker-compose --version

创建 Docker Compose 文件

我们首先需要创建一个 Docker Compose 文件,该文件将描述我们要部署的多个 Vue 项目。以下是一个示例文件的结构:

version: '3'
services:
  frontend1:
    build:
      context: ./frontend1
      dockerfile: Dockerfile
    ports:
      - 8081:80
    depends_on:
      - backend
  frontend2:
    build:
      context: ./frontend2
      dockerfile: Dockerfile
    ports:
      - 8082:80
    depends_on:
      - backend
  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    ports:
      - 8080:80

在上面的示例中,我们定义了三个服务:frontend1frontend2backend。每个服务都有一个 build 配置项,用于指定 Dockerfile 的位置。ports 配置项定义了容器内部的端口与主机之间的映射关系。depends_on 配置项用于定义服务之间的依赖关系。

创建 Dockerfile

接下来,我们需要为每个 Vue 项目创建一个 Dockerfile,以便构建镜像并运行容器。以下是一个示例 Dockerfile 的内容:

FROM node:14-alpine as build

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

RUN npm run build


FROM nginx:alpine

COPY --from=build /app/dist /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

上面的 Dockerfile 中,我们首先使用 node:14-alpine 镜像作为构建阶段的基础镜像。在构建阶段,我们将安装应用程序的依赖并构建静态文件。然后,我们使用 nginx:alpine 镜像作为运行阶段的基础镜像,并将构建阶段生成的静态文件复制到 Nginx 的默认目录中。最后,我们暴露容器的 80 端口,并运行 Nginx 服务。

启动项目

完成了上述步骤后,我们就可以使用 Docker Compose 启动多个 Vue 项目了。在终端中,进入包含 Docker Compose 文件的目录,并执行以下命令:

docker-compose up --build

Docker Compose 将会根据配置文件创建并运行容器。你可以通过访问 http://localhost:8081http://localhost:8082 来访问两个前端项目,以及 http://localhost:8080 来访问后端项目。

甘特图

下面是一个示例的甘特图,展示了使用 Docker Compose 部署多个 Vue 项目的过程:

gantt
  title Docker Compose 部署多个 Vue 项目

  section 创建 Docker Compose 文件
  创建并配置 Docker Compose 文件: done, 2022-01-01, 1d

  section 创建 Dockerfile
  为每个 Vue 项目创建 Dockerfile: done, 2022-01-02, 2d

  section 启动项目
  使用 Docker Compose 启动多个 Vue 项目: done, 2022-01-04, 1d

状态图

下面是一个示例的状态图,展示了使用 Docker Compose 部署多个 Vue