Skip to main content

服务部署

本文档介绍 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 访问密钥
  • 加密密钥等

不要将包含真实密钥的配置文件提交到版本控制系统中。

部署脚本​

我们推荐使用部署脚本进行一键部署,该脚本会自动完成以下操作:

  1. 启动所有 Docker Compose 服务
  2. 等待服务就绪
  3. 重启网关服务以确保依赖服务已启动
  4. 清理无用镜像

部署脚本内容​

#!/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 标签,稳定性更好
  • 特定定制: 根据实际需求选择特定的定制版本

常用运维命令​

服务管理​

# 启动所有服务
docker compose up -d

# 查看服务状态
docker compose ps

# 查看服务日志
docker compose logs -f

# 重启所有服务
docker compose restart

# 停止并删除容器
docker compose down

单服务操作​

# 拉取最新镜像
docker compose pull <服务名>

# 启动指定服务
docker compose up -d <服务名>

# 重启指定服务
docker compose restart <服务名>

# 查看指定服务日志
docker compose logs -f <服务名>

镜像管理​

# 查看本地镜像
docker images

# 删除无用镜像
docker image prune -f

# 删除所有未使用的镜像
docker image prune -a

服务访问​

部署完成后,可以通过以下方式访问:

  • HTTP: http://your-domain(端口 80)
  • HTTPS: https://your-domain(端口 443)
  • MinIO 控制台: http://your-domain:9001

故障排查​

常见问题​

1. 容器无法启动​

# 查看容器日志
docker compose logs <服务名>

# 检查容器状态
docker compose ps

2. 网络连接问题​

# 检查网络
docker network ls
docker network inspect chameleon-net

3. 镜像拉取失败​

# 手动拉取镜像
docker pull <镜像名>

# 重新启动服务
docker compose up -d

相关文档​