Files
jenkins-pipeline-files/compose-file/golang-docker-compose.yml
T
2026-10-20 16:18:32 +08:00

663 lines
20 KiB
YAML

# Docker Compose 文件版本,3.7 支持大多数现代 Docker 特性
version: '3.7'
# 应用服务定义区,包含多种 Go 框架 + 多种前端 UI 组件库的组合服务
services:
# ==========================================================================================
# Gin 框架 + Layui 前端模板
# ==========================================================================================
gin_layui:
# 镜像名称:从私有仓库拉取,格式为 ${仓库地址}/xiaomayi/${服务名}:${版本号}
# 版本号未指定时默认使用 latest
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称,使用环境变量 ${SERVER_NAME} 指定,便于识别
container_name: ${SERVER_NAME}
# 以特权模式运行容器,赋予容器访问宿主机文件系统、设备等的权限
# 注意:特权模式安全性较低,生产环境需谨慎使用
privileged: true
# 指定容器内运行进程的用户为 root
user: root
# 启动策略:始终重启(容器退出时自动重启)
restart: always
# 网络模式:host 模式,容器直接使用宿主机网络,无需 NAT 转换
# 注意:host 模式下 ports 端口映射实际不生效,仅作声明用途
network_mode: host
# 端口映射声明(host 模式下实际由应用自身监听端口)
ports:
- 8010:8010
# 文件挂载:将宿主机当前目录下 ${SERVER_NAME}/upload 挂载到容器内上传目录
# 用于持久化用户上传的文件
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 从 .env.local 文件加载环境变量到容器
env_file:
- .env.local
# 日志配置:使用 json-file 驱动,单个日志文件最大 500MB,最多保留 10 个
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Gin 框架 + ElementPlus 前端模板
# ==========================================================================================
gin_elevue:
# 镜像名称(同上,使用环境变量动态拼接)
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式运行
privileged: true
# 容器内运行用户
user: root
# 始终重启策略
restart: always
# host 网络模式
network_mode: host
# 端口映射(8013 端口)
ports:
- 8013:8013
# 上传文件持久化挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志轮转配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Gin 框架 + AntDesignVue 前端模板
# ==========================================================================================
gin_antdvue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8016 端口)
ports:
- 8016:8016
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Gin 框架 + NaiveUI 前端模板
# ==========================================================================================
gin_naivevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8019 端口)
ports:
- 8019:8019
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Beego 框架 + Layui 前端模板
# ==========================================================================================
beego_layui:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8030 端口)
ports:
- 8030:8030
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Beego 框架 + ElementPlus 前端模板
# ==========================================================================================
beego_elevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8033 端口)
ports:
- 8033:8033
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件(已补全,与其他服务保持一致)
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Beego 框架 + AntDesignVue 前端模板
# ==========================================================================================
beego_antdvue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8036 端口)
ports:
- 8036:8036
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Beego 框架 + NaiveUI 前端模板
# ==========================================================================================
beego_naivevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8039 端口)
ports:
- 8039:8039
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# GoFrame 框架 + Layui 前端模板
# ==========================================================================================
goframe_layui:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
# 注意:要使用 ports 端口映射,必须移除 host 网络模式,改用默认 bridge 网络
#network_mode: host
# 端口映射:宿主机端口:容器端口
ports:
- 8020:8000
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# GoFrame 框架 + ElementPlus 前端模板
# ==========================================================================================
goframe_elevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
# 注意:要使用 ports 端口映射,必须移除 host 网络模式,改用默认 bridge 网络
#network_mode: host
# 端口映射:宿主机端口:容器端口
ports:
- 8023:8000
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
environment:
TZ: Asia/Shanghai
GF_SERVER_ADDRESS: ":8000"
GF_DATABASE_DEFAULT_LINK: "mysql:${MYSQL_USER}:${MYSQL_PASSWORD}@tcp(${MYSQL_HOST}:${MYSQL_HOST_PORT})/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=true&loc=Local"
GF_REDIS_DEFAULT_ADDRESS: "${REDIS_HOST}:${REDIS_HOST_PORT}"
GF_REDIS_DEFAULT_PASS: "${REDIS_PASSWORD}"
GF_FILE_UPLOADDIR: "/data/app/upload"
GF_JWT_SECRET: "${JWT_SECRET}"
GF_CAPTCHA_BYPASSCODE: ""
GF_APP_ERRORMSG: "false"
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# GoFrame 框架 + AntDesignVue 前端模板
# ==========================================================================================
goframe_antdvue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
# 注意:要使用 ports 端口映射,必须移除 host 网络模式,改用默认 bridge 网络
#network_mode: host
# 端口映射:宿主机端口:容器端口
ports:
- 8026:8000
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# GoFrame 框架 + NaiveUI 前端模板
# ==========================================================================================
goframe_naivevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
# 注意:要使用 ports 端口映射,必须移除 host 网络模式,改用默认 bridge 网络
#network_mode: host
# 端口映射:宿主机端口:容器端口
ports:
- 8029:8000
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Iris 框架 + Layui 前端模板
# ==========================================================================================
iris_layui:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8040 端口)
ports:
- 8040:8040
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Iris 框架 + ElementPlus 前端模板
# ==========================================================================================
iris_elevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8043 端口)
ports:
- 8043:8043
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Iris 框架 + AntDesignVue 前端模板
# ==========================================================================================
iris_antdvue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8046 端口)
ports:
- 8046:8046
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Iris 框架 + NaiveUI 前端模板
# ==========================================================================================
iris_naivevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8049 端口)
ports:
- 8049:8049
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Echo 框架 + Layui 前端模板
# ==========================================================================================
echo_layui:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8050 端口)
ports:
- 8050:8050
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Echo 框架 + ElementPlus 前端模板
# ==========================================================================================
echo_elevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8053 端口)
ports:
- 8053:8053
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Echo 框架 + AntDesignVue 前端模板
# ==========================================================================================
echo_antdvue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8056 端口)
ports:
- 8056:8056
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"
# ==========================================================================================
# Echo 框架 + NaiveUI 前端模板
# ==========================================================================================
echo_naivevue:
# 镜像名称
image: ${DOCKER_REGISTRY_URL}/xiaomayi/${SERVER_NAME}:${VERSION:-latest}
# 容器名称
container_name: ${SERVER_NAME}
# 特权模式
privileged: true
# 运行用户
user: root
# 始终重启
restart: always
# host 网络模式
network_mode: host
# 端口映射(8059 端口)
ports:
- 8059:8059
# 上传目录挂载
volumes:
- $PWD/${SERVER_NAME}/upload:/data/app/upload
# 环境变量文件
env_file:
- .env.local
# 日志配置
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "10"