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文件定义了两个服务:backend
和database
。backend
服务使用了前面定义的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
该命令将列出