本文档提供Java AI Starter项目的完整Docker部署指南。使用Docker可以快速、一致地在任何环境中部署应用。
- Docker 20.10+
- Docker Compose 2.0+
- 至少2GB可用内存
- DeepSeek API Key
# 克隆项目
git clone https://github.com/IntelliDev-AI/java-ai-starter.git
cd java-ai-starter
# 运行部署脚本
./docker-deploy.sh# 复制环境配置
cp .env.docker .env
# 编辑.env文件,配置你的API Key
# 构建并启动
docker-compose up -d
# 查看状态
docker-compose ps# 从模板创建.env文件
cp .env.docker .env
# 编辑.env文件,至少配置以下项:
nano .env
# 必须配置:
AI_API_KEY=你的DeepSeek_API_Key
# 可选配置:
HOST_PORT=8080 # 主机端口
AI_MODEL=deepseek-chat # AI模型
AI_BASE_URL=https://api.deepseek.com # API地址# 使用部署脚本
./docker-deploy.sh build
# 或手动构建
docker-compose build# 启动主应用(推荐)
./docker-deploy.sh start
# 或启动完整服务栈
docker-compose up -d java-ai-app postgres redis# 检查容器状态
docker-compose ps
# 测试健康检查
curl http://localhost:8080/api/health
# 测试AI功能
curl -X POST http://localhost:8080/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "你好,Docker部署成功了吗?"}'Dockerfile
├── 多阶段构建
│ ├── 阶段1: maven构建 (JDK 17)
│ └── 阶段2: 运行环境 (JRE 17)
├── 非root用户运行
├── 健康检查配置
├── 时区设置 (Asia/Shanghai)
└── 资源限制优化
services:
java-ai-app: # 主应用服务
build: . # 从当前目录构建
ports: # 端口映射
- "8080:8080"
environment: # 环境变量
- AI_API_KEY
volumes: # 数据卷
- ./logs:/app/logs
healthcheck: # 健康检查
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
postgres: # PostgreSQL数据库 (可选)
image: postgres:15-alpine
redis: # Redis缓存 (可选)
image: redis:7-alpine
nginx: # Nginx反向代理 (可选)
image: nginx:alpine
prometheus: # 监控系统 (可选)
image: prom/prometheus
grafana: # 监控面板 (可选)
image: grafana/grafana| 变量名 | 默认值 | 说明 |
|---|---|---|
AI_API_KEY |
(必填) | DeepSeek API Key |
AI_MODEL |
deepseek-chat |
AI模型名称 |
AI_BASE_URL |
https://api.deepseek.com |
API地址 |
AI_TIMEOUT |
30000 |
请求超时(毫秒) |
AI_MAX_TOKENS |
1000 |
最大token数 |
HOST_PORT |
8080 |
主机映射端口 |
DB_PASSWORD |
ai_password |
数据库密码 |
GRAFANA_PASSWORD |
admin |
Grafana管理员密码 |
# 使用热部署,便于开发调试
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up# 使用生产配置,包含监控和备份
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d# 仅运行主应用
docker run -p 8080:8080 \
-e AI_API_KEY=你的key \
-v ./logs:/app/logs \
intellidev/java-ai-starter:latest# 查看容器状态
docker-compose ps
# 查看应用日志
docker-compose logs -f java-ai-app
# 进入容器
docker-compose exec java-ai-app sh
# 重启服务
docker-compose restart java-ai-app
# 停止服务
docker-compose down
# 清理所有资源
docker-compose down -v --rmi all# 备份数据库
docker-compose exec postgres pg_dump -U ai_user ai_starter > backup.sql
# 恢复数据库
cat backup.sql | docker-compose exec -T postgres psql -U ai_user ai_starter
# 查看日志文件
tail -f logs/application.log
# 清理日志
docker-compose exec java-ai-app find /app/logs -name "*.log" -mtime +7 -delete# 访问监控面板
# Prometheus: http://localhost:9090
# Grafana: http://localhost:3000 (admin/admin)
# 查看应用指标
curl http://localhost:8080/actuator/metrics
# 健康检查详情
curl http://localhost:8080/actuator/health# 检查端口占用
sudo lsof -i :8080
# 修改端口
# 在.env文件中修改 HOST_PORT=8081# 检查环境变量
docker-compose exec java-ai-app env | grep AI_API_KEY
# 测试API连接
docker-compose exec java-ai-app curl -X POST https://api.deepseek.com/v1/chat/completions \
-H "Authorization: Bearer $AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-chat","messages":[{"role":"user","content":"test"}]}'# 查看容器资源使用
docker stats
# 调整内存限制
# 在docker-compose.yml中增加:
# java-ai-app:
# deploy:
# resources:
# limits:
# memory: 1G# 清理构建缓存
docker system prune -a
# 重新构建
docker-compose build --no-cache
# 查看详细错误
docker-compose build --progress=plain# 使用密钥管理服务
# 而不是在.env文件中明文存储API Key
# 配置网络隔离
docker network create --internal ai-internal-network
# 启用TLS/SSL
# 配置Nginx SSL证书# 配置防火墙
sudo ufw allow 8080/tcp
# 使用反向代理认证
# 配置Nginx Basic Auth
# 限制API访问频率
# 在应用层或Nginx层配置限流# 更新镜像
docker-compose pull
docker-compose up -d
# 安全扫描
docker scan intellidev/java-ai-starter
# 备份数据
# 设置定期备份任务# 在docker-compose.yml中配置资源限制
java-ai-app:
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M# 配置自定义网络
networks:
ai-network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16# 使用本地卷提高IO性能
volumes:
postgres_data:
driver: local
driver_opts:
type: none
device: /data/postgres
o: bind- 使用
.env.docker作为模板,不提交.env文件 - 在Dockerfile中使用多阶段构建减少镜像大小
- 配置合适的
.dockerignore文件
- 使用Docker Compose测试完整服务栈
- 配置CI/CD流水线自动构建和测试
- 进行安全扫描和漏洞检查
- 使用私有镜像仓库
- 配置监控和告警
- 定期更新基础镜像和安全补丁
- 实施备份和灾难恢复计划
🎉 部署成功! 现在你可以通过 http://localhost:8080 访问Java AI Starter应用了。
如需进一步帮助,请参考项目文档或提交Issue。