服务部署
本文档介绍 Chameleon 平台的服务部署方式,包括 Docker Compose 部署和常用运维命令。
部署架构
Chameleon 平台采用容器化部署,主要包含以下服务组件:
- chameleon-gateway: 网关服务(OpenResty),负责请求路由和负载均衡
- chameleon-api: 后端 API 服务
- chameleon-web: 前端 Web 应用
- chameleon-minio: 对象存储服务
- chameleon-docs: 文档服务
Docker Compose 部署
我们推荐使用 Docker Compose 进行一键部署。
部署文件示例
以下是一个典型的 docker-compose.yaml 配置示例:
networks:
chameleon-net:
name: chameleon-net
driver: bridge
services:
# 网关服务
chameleon-gateway:
image: crpi-9r02ywjjc1xv00ys.cn-chengdu.personal.cr.aliyuncs.com/seventiny/chameleon-gateway
restart: unless-stopped
container_name: chameleon-gateway
depends_on:
- chameleon-minio
- chameleon-api
- chameleon-web
- chameleon-docs
ports:
- "80:80"
- "443:443"
networks:
- chameleon-net
pull_policy: always
# MinIO 对象存储
chameleon-minio:
image: crpi-9r02ywjjc1xv00ys.cn-chengdu.personal.cr.aliyuncs.com/seventiny/minio:RELEASE.2024-03-07T00-43-48Z-cpuv1
restart: unless-stopped
container_name: chameleon-minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- /var/lib/minio/data:/data
environment:
- MINIO_ROOT_USER=<your-username>
- MINIO_ROOT_PASSWORD=<your-password>
command: server /data --console-address ":9001"
networks:
- chameleon-net
pull_policy: always
# API 服务
chameleon-api:
image: crpi-9r02ywjjc1xv00ys.cn-chengdu.personal.cr.aliyuncs.com/seventiny/chameleon-api:dev
restart: unless-stopped
container_name: chameleon-api
environment:
- CHAMELEON__ENVIRONMENT=<environment-name>
- CHAMELEON__FrontEndEncryptKey=<your-encrypt-key>
- CHAMELEON__ServerEncryptKey=<your-encrypt-key>
- CHAMELEON__AccountConfig__PasswordSalt=<your-salt>
- CHAMELEON__TokenConfig__SecurityKey=<your-security-key>
- CHAMELEON__MINIOCONFIG__MINIOENDPOINT=chameleon-minio
- CHAMELEON__MINIOCONFIG__MINIOPORT=9000
- CHAMELEON__MINIOCONFIG__MinioAccessKey=<your-access-key>
- CHAMELEON__MINIOCONFIG__MinioSecretKey=<your-secret-key>
- CHAMELEON__DATABASE__POSTGRES__HOST=<database-host>
- CHAMELEON__DATABASE__POSTGRES__PORT=<database-port>
- CHAMELEON__DATABASE__POSTGRES__USERNAME=<database-username>
- CHAMELEON__DATABASE__POSTGRES__PASSWORD=<database-password>
- CHAMELEON__DATABASE__REDIS__ENDPOINTS__0=<redis-endpoint>
- CHAMELEON__DATABASE__REDIS__PASSWORD=<redis-password>
networks:
- chameleon-net
pull_policy: always
# Web 前端
chameleon-web:
image: crpi-9r02ywjjc1xv00ys.cn-chengdu.personal.cr.aliyuncs.com/seventiny/chameleon-web:dev
restart: unless-stopped
container_name: chameleon-web
networks:
- chameleon-net
pull_policy: always
配置说明
安全提示
请务必替换配置中的敏感信息,包括:
- 数据库密码
- Redis 密码
- MinIO 访问密钥
- 加密密钥等
不要将包含真实密钥的配置文件提交到版本控制系统中。
部署脚本
我们推荐使用部署脚本进行一键部署,该脚本会自动完成以下操作:
- 启动所有 Docker Compose 服务
- 等待服务就绪
- 重启网关服务以确保依赖服务已启动
- 清理无用镜像
部署脚本内容
#!/bin/bash
# 启动服务并等待 5 秒
docker compose up -d && sleep 5 && docker compose restart chameleon-gateway
echo "deploy done"
echo "start image prune..."
# 清理无用镜像
docker image prune -f
echo "All done, have a nice day!"
使用方法
# 进入配置文件所在目录
cd /path/to/docker-compose
# 执行部署脚本
bash deploy.sh
镜像版本说明
以下是主要服务的 Docker 镜像标签说明:
chameleon-api
| Tag | 说明 |
|---|---|
dev | 测试版(包含最新特性) |
main | 稳定版 |
chameleon-web
| Tag | 说明 |
|---|---|
dev | 测试版(包含最新特性) |
main | 稳定版 |
版本选择建议
- 开发/测试环境: 建议使用
dev标签,可以体验最新功能 - 生产环境: 建议使用
main标签,稳定性更好 - 特定定制: 根据实际需求选择特定的定制版本