4.7 KiB
4.7 KiB
Docker 部署指南
本文档说明如何使用 Docker 部署 AnKao 应用。
快速开始
使用 Docker Compose (推荐)
最简单的方式是使用 docker-compose,它会自动启动数据库和应用:
# 构建并启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 停止并删除数据
docker-compose down -v
访问应用: http://localhost:8080
手动使用 Docker
如果你想单独构建和运行容器:
1. 构建镜像
docker build -t ankao:latest .
2. 启动 PostgreSQL 数据库
docker run -d \
--name ankao-postgres \
-e POSTGRES_DB=ankao \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
postgres:16-alpine
3. 启动应用
docker run -d \
--name ankao-app \
-p 8080:8080 \
-e DB_HOST=host.docker.internal \
-e DB_PORT=5432 \
-e DB_USER=postgres \
-e DB_PASSWORD=postgres \
-e DB_NAME=ankao \
-e DB_SSLMODE=disable \
ankao:latest
注意: 在 Windows 和 Mac 上使用 host.docker.internal 连接宿主机的数据库。在 Linux 上需要使用 --network host 或创建自定义网络。
环境变量配置
应用支持以下环境变量配置:
数据库配置
| 环境变量 | 描述 | 默认值 |
|---|---|---|
DB_HOST |
数据库主机地址 | pgsql.yuchat.top |
DB_PORT |
数据库端口 | 5432 |
DB_USER |
数据库用户名 | postgres |
DB_PASSWORD |
数据库密码 | longqi@1314 |
DB_NAME |
数据库名称 | ankao |
DB_SSLMODE |
SSL 模式 | disable |
应用配置
| 环境变量 | 描述 | 默认值 |
|---|---|---|
GIN_MODE |
Gin 运行模式 (debug/release) | debug |
Docker Compose 配置说明
docker-compose.yml 文件定义了两个服务:
-
postgres: PostgreSQL 16 数据库
- 端口: 5432
- 数据持久化: 使用 Docker volume
postgres_data - 健康检查: 确保数据库就绪后再启动应用
-
app: AnKao 应用
- 端口: 8080
- 依赖 postgres 服务
- 自动重启策略
生产环境部署建议
1. 修改默认密码
重要: 生产环境中务必修改数据库密码!
编辑 docker-compose.yml:
environment:
POSTGRES_PASSWORD: 你的强密码
DB_PASSWORD: 你的强密码
2. 使用外部数据库
如果使用外部 PostgreSQL 数据库,只需启动 app 服务:
docker-compose up -d app
并配置相应的环境变量。
3. 配置反向代理
生产环境建议使用 Nginx 作为反向代理:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
4. 启用 HTTPS
使用 Let's Encrypt 免费 SSL 证书:
# 安装 certbot
apt-get install certbot python3-certbot-nginx
# 获取证书
certbot --nginx -d your-domain.com
5. 备份数据
定期备份 PostgreSQL 数据:
# 备份数据库
docker exec ankao-postgres pg_dump -U postgres ankao > backup.sql
# 恢复数据库
cat backup.sql | docker exec -i ankao-postgres psql -U postgres ankao
故障排查
查看应用日志
# 查看所有服务日志
docker-compose logs
# 查看应用日志
docker-compose logs app
# 查看数据库日志
docker-compose logs postgres
# 实时查看日志
docker-compose logs -f app
进入容器调试
# 进入应用容器
docker exec -it ankao-app sh
# 进入数据库容器
docker exec -it ankao-postgres sh
常见问题
1. 应用无法连接数据库
检查:
- 数据库是否已启动:
docker-compose ps - 网络配置是否正确
- 环境变量配置是否正确
2. 端口被占用
修改 docker-compose.yml 中的端口映射:
ports:
- "8081:8080" # 将宿主机端口改为 8081
3. 构建失败
清理缓存重新构建:
docker-compose build --no-cache
镜像优化
当前 Dockerfile 使用多阶段构建,最终镜像基于 Alpine Linux,体积小且安全。
镜像大小约:
- 前端构建阶段: ~200MB (不包含在最终镜像)
- 后端构建阶段: ~300MB (不包含在最终镜像)
- 最终运行镜像: ~30MB
更新应用
# 拉取最新代码
git pull
# 重新构建并启动
docker-compose up -d --build
# 或者分步执行
docker-compose build
docker-compose up -d
清理资源
# 停止并删除容器
docker-compose down
# 删除容器和数据卷
docker-compose down -v
# 删除镜像
docker rmi ankao:latest