Docker Compose部署Spring Boot

2026-08-17 7
Docker

类型:虚拟化技术

简介:基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。

随着云计算和容器技术的发展,越来越多的网站、企业应用和SaaS项目开始采用容器化部署方案。相比传统服务器环境中逐个安装和配置服务,Docker可以将应用程序及其依赖环境封装在独立容器中,实现更快速、更稳定的部署方式。

在实际项目中,一个完整业务系统通常不仅包含后端服务,还需要数据库、缓存、Web服务器、文件存储以及AI相关组件。如果分别安装和维护这些服务,不仅部署流程复杂,后期迁移和扩展也会增加难度。

Docker Compose通过统一配置文件,可以将多个容器服务进行编排管理,实现一键启动、停止和更新。

本文将介绍如何使用Docker Compose部署一个完整应用环境,包括Spring Boot后端、Nginx、MySQL、Redis以及Milvus等服务组件,帮助开发者快速搭建容器化运行环境。

Docker Compose部署架构

本次部署主要包含以下服务组件:

服务 作用
Spring Boot 后端业务服务
Nginx 静态资源托管和API反向代理
MySQL 业务数据库
Redis 缓存服务
Milvus AI向量检索数据库
etcd Milvus元数据管理
MinIO 对象存储服务

整体架构如下:

用户访问
    |
    ↓
  Nginx
    |
    ↓
Spring Boot后端
    |
-----------------------
| MySQL | Redis       |
| Milvus | MinIO      |
-----------------------

通过Docker Compose管理后,所有服务运行在独立容器中,容器之间通过Docker网络进行通信。


部署前准备

在开始部署之前,需要准备一台安装Linux系统的服务器,并完成Docker环境配置。

本文以Ubuntu系统为例。

安装Docker

更新系统软件包:

apt update

安装Docker:

apt install docker.io docker-compose-plugin -y

启动Docker服务:

systemctl enable --now docker

查看Docker版本:

docker --version

查看Docker Compose版本:

docker compose version

如果能够正常返回版本信息,说明Docker环境安装完成。


上传项目代码

将完整项目代码上传到服务器指定目录,例如:

/opt/iYqueCode

推荐项目目录结构:

iYqueCode
│
├── docker-compose.yml
├── Dockerfile
├── .env.example
│
├── frontEnd
│   └── Dockerfile
│
└── deploy
    └── nginx
        └── default.conf

主要文件说明:

文件 作用
docker-compose.yml 定义所有容器服务
Dockerfile 构建后端镜像
frontEnd/Dockerfile 构建前端镜像
nginx配置文件 配置代理规则
.env 保存环境变量

配置环境变量

进入项目目录:

cd /opt/iYqueCode

复制环境变量模板:

cp .env.example .env

编辑配置文件:

vim .env

示例配置:

# MySQL配置

MYSQL_ROOT_PASSWORD=root

MYSQL_DATABASE=scrm_ky


# MinIO配置

MINIO_ROOT_USER=minioadmin

MINIO_ROOT_PASSWORD=minioadmin


# 文件访问地址

IYQUE_FILE_VIEW_URL=http://localhost/api/file/fileView/

如果暂时不使用AI模型,可以保持相关API密钥为空:

AI_MODELS_CONFIGS_GLM_4_API_KEY=

实际生产环境中,建议修改默认密码,并使用更加安全的密钥配置。


使用Docker Compose启动服务

进入项目根目录:

cd /opt/iYqueCode

执行构建并启动:

docker compose up -d --build

该命令会自动完成:

  • 构建应用镜像;
  • 创建Docker网络;
  • 启动数据库服务;
  • 启动后端服务;
  • 启动Nginx服务;
  • 加载环境变量配置。

查看容器运行状态:

docker compose ps

正常情况下,各服务状态应显示:

Up

查看Docker服务日志

部署完成后,需要查看日志确认服务是否正常启动。

查看后端日志:

docker compose logs -f backend

查看Nginx日志:

docker compose logs -f nginx

如果Spring Boot日志出现:

Tomcat started

表示后端服务启动成功。


数据库初始化配置

部分项目不会自动创建数据库,需要手动导入SQL文件。

首先进入MySQL容器:

docker exec -it mysql bash

登录数据库:

mysql -uroot -p

创建数据库:

CREATE DATABASE scrm_ky;

导入数据库文件:

mysql -uroot -p scrm_ky < iyque_db.sql

数据库常见问题处理

数据表不存在

如果启动后出现:

Table doesn't exist

通常是数据库SQL文件版本与代码版本不一致。

解决方法:

  • 检查项目缺失的数据表;
  • 执行对应SQL补充文件;
  • 重新启动后端服务。

字段名称错误

部分项目实体类使用驼峰命名,例如:

正确:

tagId
groupId
orderNumber

错误:

tag_id
group_id
order_number

数据库字段需要与代码实体保持一致,否则可能出现:

Unknown column

错误。


配置Nginx访问路径

项目通常通过Nginx统一提供访问入口。

示例:

地址 功能
http://服务器IP/ 默认入口
/tools/ PC端页面
/openmobile/ 移动端页面
/api/ 后端API接口

Nginx负责:

  • 静态文件访问;
  • 前后端请求转发;
  • 统一入口管理。

部署完成后的访问测试

检查容器状态

执行:

docker ps

确认:

  • nginx正常运行;
  • backend正常运行;
  • mysql正常运行;
  • redis正常运行。

测试后端接口

进入Nginx容器:

docker compose exec nginx wget -S -O - http://backend:8085/iYqueSys/getBaseInfo

如果返回:

HTTP/1.1 200

说明:

  • 后端服务正常;
  • Docker网络正常;
  • Nginx代理正常。

常见部署问题

前端构建失败

常见原因:

  • npm依赖冲突;
  • Node版本不匹配;
  • 插件版本不兼容。

解决:

重新安装依赖:

npm install --legacy-peer-deps

然后重新构建镜像。


Nginx出现502 Bad Gateway

原因:

  • 后端容器未启动;
  • Spring Boot仍在启动;
  • 后端端口未监听。

检查:

docker logs backend

确认后端是否正常运行。


页面访问404

排查:

  1. 检查Nginx配置;
  2. 检查前端是否成功构建;
  3. 检查访问路径是否匹配。

Docker Compose部署优势

相比传统部署方式,Docker Compose具有以下优势:

环境统一

开发、测试和生产环境可以保持一致。

快速部署

通过一个配置文件即可启动完整业务系统。

易于迁移

更换服务器时,只需要迁移项目文件和数据即可快速恢复环境。

简化维护

所有服务均通过容器管理,方便升级和故障排查。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。