Docker Compose部署Spring Boot + Vue前后端分离项目

概述

Docker是一种轻量级的容器化技术,可以帮助开发人员将应用程序打包成容器,方便进行部署和管理。Docker Compose是Docker的一个工具,用于定义和运行多个容器的应用程序。

本文将介绍如何使用Docker Compose来部署一个基于Spring Boot和Vue的前后端分离项目。我们将使用Docker Compose来启动和管理Spring Boot后端服务和Vue前端服务,以实现快速、可靠的部署。

前提条件

在开始之前,我们需要确保已经安装了Docker和Docker Compose。请根据你所使用的操作系统,参考Docker官方文档进行安装。

准备工作

在开始部署之前,我们需要准备好以下文件和目录结构:

project
├── backend
│   ├── Dockerfile
│   └── target
│       └── backend.jar
├── frontend
│   ├── Dockerfile
│   └── dist
│       └── index.html
└── docker-compose.yml
  • backend目录用于存放后端Spring Boot项目的代码和Dockerfile。
  • frontend目录用于存放前端Vue项目的代码和Dockerfile。
  • docker-compose.yml文件用于定义和配置Docker Compose服务。

后端服务部署

首先,我们需要准备好后端Spring Boot项目的Dockerfile。在backend目录下创建一个名为Dockerfile的文件,并添加以下内容:

FROM openjdk:8-jdk-alpine

WORKDIR /app
COPY target/backend.jar .

EXPOSE 8080

CMD ["java", "-jar", "backend.jar"]

上述Dockerfile使用了基于Alpine Linux的OpenJDK 8镜像作为基础镜像,并将项目的JAR文件复制到容器的工作目录中。同时,声明了容器对外暴露的端口为8080,并指定了启动命令。

接下来,我们可以使用Docker Compose来启动后端服务。在项目根目录下创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3'
services:
  backend:
    build: ./backend
    ports:
      - 8080:8080
    depends_on:
      - database
  database:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: database
      MYSQL_USER: user
      MYSQL_PASSWORD: password

上述docker-compose.yml文件定义了两个服务:backenddatabasebackend服务使用了前面定义的Dockerfile进行构建,并将容器的8080端口映射到主机的8080端口。database服务使用了MySQL 5.7镜像,并设置了一些环境变量来配置数据库。

可以使用以下命令来启动后端服务:

docker-compose up -d backend

前端服务部署

接下来,我们需要准备好前端Vue项目的Dockerfile。在frontend目录下创建一个名为Dockerfile的文件,并添加以下内容:

FROM nginx:1.19-alpine

COPY dist/ /usr/share/nginx/html

上述Dockerfile使用了基于Alpine Linux的Nginx镜像作为基础镜像,并将前端项目的静态文件复制到Nginx的默认静态文件目录。

然后,我们可以使用Docker Compose来启动前端服务。在docker-compose.yml文件中添加以下内容:

  frontend:
    build: ./frontend
    ports:
      - 80:80
    depends_on:
      - backend

上述配置定义了一个名为frontend的服务,使用了前面定义的Dockerfile进行构建,并将容器的80端口映射到主机的80端口。同时,指定了该服务依赖于backend服务。

可以使用以下命令来启动前端服务:

docker-compose up -d frontend

查看部署状态

我们可以使用以下命令来查看Docker Compose中的服务状态:

docker-compose ps

该命令将列出