# Docker Compose 文件版本定义 # 3.7 版本支持丰富的部署配置和资源限制功能 version: '3.7' # 服务定义块,包含所有需要部署的容器服务 services: # 后端服务 - 小蚂蚁管理系统后端 xiaomayi-admin: # 镜像地址:从私有Harbor仓库拉取镜像 # ${VERSION:-latest} 表示使用VERSION环境变量,如果未设置则使用latest标签 image: manage.harbor.djangoadmin.cn/xiaomayi/xiaomayi-admin:${VERSION:-latest} # 容器名称:指定容器的名称,便于管理和识别 container_name: xiaomayi-admin # 重启策略:always表示容器退出时总是自动重启 # 确保服务在异常退出后能够自动恢复 restart: always # 网络模式:host表示使用主机网络模式 # 容器直接使用宿主机的网络栈,性能更好,端口直接暴露在主机上 network_mode: host # 端口映射:将容器内的8081端口映射到主机的8081端口 # 格式:主机端口:容器端口 ports: - 8081:8081 # 数据卷挂载:将主机文件或目录挂载到容器内 volumes: # 挂载主机hosts文件到容器内(只读模式) # 用于容器内的域名解析,与主机保持一致 - /etc/hosts:/etc/hosts:ro # 挂载上传目录:将当前目录下的upload目录挂载到容器的/opt/apps/upload # 用于持久化存储上传的文件 - $PWD/upload:/opt/apps/upload # 挂载包目录:将当前目录下的package目录挂载到容器的/opt/apps/package # 用于存储应用程序包或其他资源文件 - $PWD/package:/opt/apps/package # 部署配置:定义资源限制和预留(Docker Swarm模式下的配置) # 在单机Docker Compose中也会被部分支持 deploy: resources: # 资源限制:容器最多可以使用的资源量 limits: cpus: '2' # 最多使用2个CPU核心 memory: 1.5G # 最多使用1.5GB内存 # 资源预留:保证容器至少获得的资源量 reservations: cpus: '0.25' # 至少保留0.25个CPU核心 memory: 500M # 至少保留500MB内存 # 前端服务 - 小蚂蚁管理系统前端 xiaomayi-web2: # 镜像地址:前端服务的Docker镜像 image: manage.harbor.djangoadmin.cn/xiaomayi/xiaomayi-web2:${VERSION:-latest} # 容器名称:前端服务容器名称 container_name: xiaomayi-web2 # 重启策略:总是自动重启 restart: always # 网络模式:使用主机网络模式 network_mode: host # 端口映射:前端服务监听8082端口 ports: - 8082:8082 # 数据卷挂载 volumes: # 挂载主机hosts文件(只读) - /etc/hosts:/etc/hosts:ro # 挂载上传目录(读写模式) # :rw 表示读写权限(默认模式,显式声明更清晰) - $PWD/upload:/opt/apps/upload:rw # 挂载包目录(读写模式) - $PWD/package:/opt/apps/package:rw # 环境变量:设置容器内的环境变量 environment: # 语言设置:设置为英文UTF-8编码 - LANG=en_US.UTF-8 # 本地化设置:全部使用英文UTF-8 - LC_ALL=en_US.UTF-8 # Java虚拟机参数:设置文件编码为UTF-8 # 确保中文等特殊字符正确处理 - JAVA_OPTS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 # 部署配置:资源限制和预留 deploy: resources: # 资源上限 limits: cpus: '2' # 最多2个CPU核心 memory: 1.5G # 最多1.5GB内存 # 资源保障 reservations: cpus: '0.25' # 至少0.25个CPU核心 memory: 500M # 至少500MB内存 # 注意:该配置文件中使用了以下特殊配置: # 1. network_mode: host - 主机网络模式,容器直接使用主机网络 # 2. ${VERSION:-latest} - 环境变量替换,支持动态版本控制 # 3. deploy.resources - Docker Swarm模式的资源管理,在单机模式下也有部分效果 # 4. 多目录挂载 - 实现数据持久化和主机-容器文件共享 # 5. 环境变量设置 - 确保应用程序的编码和语言环境正确 # 使用说明: # 1. 部署命令:VERSION=1.2.0 docker-compose up -d # 2. 查看日志:docker-compose logs -f # 3. 停止服务:docker-compose down # 4. 更新服务:VERSION=1.2.1 docker-compose up -d