Gin-Vue-Admin项目开发环境Docker Compose部署指南
2025-07-05 06:01:18作者:舒璇辛Bertina
前言
在现代Web应用开发中,使用Docker容器化技术可以极大简化开发环境的搭建过程。本文将以Gin-Vue-Admin项目为例,详细解析其开发环境下的Docker Compose配置文件,帮助开发者快速理解并搭建完整的开发环境。
环境概述
Gin-Vue-Admin是一个基于Gin和Vue.js开发的全栈后台管理系统框架。其开发环境需要同时运行前端(Vue)、后端(Gin)、数据库(MySQL)和缓存(Redis)四个主要组件。通过Docker Compose,我们可以将这些服务编排在一起,实现一键启动。
网络配置
networks:
network:
ipam:
driver: default
config:
- subnet: '177.7.0.0/16'
配置文件首先定义了一个自定义网络,子网地址为177.7.0.0/16。这种配置有以下优势:
- 容器间可以通过容器名直接通信
- 固定IP地址便于调试和排查问题
- 与宿主机网络隔离,避免端口冲突
服务编排
1. 前端服务(web)
web:
image: node:20
container_name: gva-web
ports:
- '8080:8080'
command: bash -c "yarn install && yarn serve"
volumes:
- ../../web:/web
前端服务使用Node.js 20镜像,特点包括:
- 开发模式下通过
yarn serve
启动开发服务器 - 通过volume挂载实现代码热更新
- 默认映射8080端口,可通过浏览器直接访问
优化建议:国内开发者可添加镜像源加速依赖安装:
command: bash -c "yarn config set registry https://registry.npmmirror.com --global && yarn install && yarn serve"
2. 后端服务(server)
server:
image: golang:1.22
ports:
- '8888:8888'
command: bash -c "go env -w GOPROXY=https://goproxy.cn,direct && go mod tidy && go run main.go"
后端服务特点:
- 使用Go 1.22镜像
- 配置了国内GOPROXY代理加速依赖下载
- 自动执行
go mod tidy
确保依赖一致性 - 直接运行main.go启动开发服务器
3. MySQL数据库
mysql:
image: mysql:8.0.21
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_DATABASE: 'qmPlus'
MYSQL_USER: 'gva'
MYSQL_PASSWORD: 'Aa@6447985'
关键配置说明:
- 显式设置UTF8MB4字符集,支持完整Unicode字符
- 自动创建名为qmPlus的数据库
- 创建gva用户并设置密码
- 健康检查确保服务可用性
注意:ARM架构设备(如M1 Mac)需使用mysql/mysql-server:8.0.21
镜像
4. Redis缓存
redis:
image: redis:6.0.6
ports:
- '16379:6379'
Redis服务配置相对简单,主要注意:
- 使用Redis 6.0.6版本
- 数据持久化到volume
- 健康检查确保服务可用
服务依赖关系
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
后端服务明确依赖MySQL和Redis,且只有在它们健康状态检查通过后才会启动,这确保了服务启动顺序的正确性。
数据持久化
volumes:
mysql:
redis:
通过Docker volume实现数据持久化,即使容器重启数据也不会丢失。
最佳实践建议
- 开发环境隔离:建议为每个开发者创建独立的Docker网络,避免端口冲突
- 配置管理:敏感信息如数据库密码应通过环境变量文件管理
- 镜像版本固定:生产环境应固定所有镜像版本号
- 资源限制:可添加CPU和内存限制避免资源耗尽
总结
通过这份Docker Compose文件,Gin-Vue-Admin项目实现了:
- 前后端分离开发环境一键启动
- 依赖服务(MySQL/Redis)自动化配置
- 开发友好的热更新支持
- 稳定的服务健康检查机制
开发者只需执行docker-compose -f docker-compose-dev.yaml up
即可获得完整的开发环境,极大提高了开发效率。