121 lines
4.4 KiB
YAML
121 lines
4.4 KiB
YAML
# Docker Compose 文件版本定义
|
||
# 3.7 版本支持丰富的部署配置和资源限制功能
|
||
version: '3.7'
|
||
|
||
# 服务定义块,包含所有需要部署的容器服务
|
||
services:
|
||
# 后端服务 - 小蚂蚁管理系统后端
|
||
xiaomayi-admin:
|
||
# 镜像地址:从私有Harbor仓库拉取镜像
|
||
# ${VERSION:-latest} 表示使用VERSION环境变量,如果未设置则使用latest标签
|
||
image: 192.168.10.102:8001/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: 192.168.10.102:8001/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 |