2.2 KiB
2.2 KiB
2.7 Docker 快速体验
:::tip 概述
deploy/docker-compose.yaml 编排了应用、Nginx、MySQL、Redis 四个容器,一键拉起完整运行环境。适合快速体验与作为生产部署的参照。
:::
编排拓扑
浏览器
│
├─ :8000 ──→ admin-server(应用,多阶段构建的精简镜像)
│ │
│ ├─ mysql:8.0(127.0.0.1:3306 仅回环绑定)
│ └─ redis:7(127.0.0.1:6379 仅回环绑定)
│
└─ :8081 ──→ nginx(只读挂载 upload 卷,直供上传文件,
temp 目录封禁)
启动步骤
# 1. 准备环境变量(与 .env.example 同款友好名)
cp .env.example .env
# 按需修改数据库/Redis 密码、JWT 密钥、文件域名
# 2. 构建并启动
cd deploy
docker compose up -d --build
# 3. 初始化数据库(首次)
docker exec -i easygoadmin-mysql mysql -uroot -p<密码> \
easygoadmin.gin.elevue < ../document/mysql/easygoadmin.gin.elevue.sql
环境变量映射
compose 不透传 .env 原名,而是把友好名映射为 APP_ 规范键:
environment:
APP_DATABASE_DEFAULT_HOST: ${MYSQL_HOST}
APP_REDIS_DEFAULT_ADDRESS: ${REDIS_ADDR}
APP_JWT_SECRET: ${JWT_SECRET}
APP_FILE_UPLOADDIR: /data/upload
APP_FILE_DOMAINURL: ${FILE_DOMAIN_URL}
卷与持久化
| 卷 | 挂载点 | 说明 |
|---|---|---|
| mysql_data | MySQL 数据目录 | 数据库持久化 |
| redis_data | Redis 数据目录 | 缓存持久化 |
| upload_data | 应用 /data/upload + nginx 只读挂载 | 上传文件,nginx 直供 |
镜像要点
deploy/Dockerfile 为多阶段构建:
- 编译阶段:
golang:1.27-alpine,CGO_ENABLED=0+ 去符号表压缩体积 - 运行阶段:
alpine:3.20+ 时区与证书,仅带二进制、config、resource
验证
docker compose ps # 四容器 healthy
curl http://127.0.0.1:8000/api/health # 应用就绪
生产环境的完整部署清单(含 Nginx 站点配置、安全加固)见 第 11 章 运维部署。