
类型:虚拟化技术
简介:基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。
随着云计算和容器技术的发展,越来越多的网站、企业应用和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
排查:
- 检查Nginx配置;
- 检查前端是否成功构建;
- 检查访问路径是否匹配。
Docker Compose部署优势
相比传统部署方式,Docker Compose具有以下优势:
环境统一
开发、测试和生产环境可以保持一致。
快速部署
通过一个配置文件即可启动完整业务系统。
易于迁移
更换服务器时,只需要迁移项目文件和数据即可快速恢复环境。
简化维护
所有服务均通过容器管理,方便升级和故障排查。

