从零到一:Earthworm多服务容器化部署全指南
从零到一:Earthworm多服务容器化部署全指南
部署架构概览
Earthworm项目采用Docker Compose实现多服务编排,通过单一配置文件管理所有依赖服务。核心架构包含六大服务组件:
- 主数据库:PostgreSQL 14存储应用核心数据
- 测试数据库:独立PostgreSQL实例用于开发测试
- 缓存服务:Redis 5提供数据缓存与会话存储
- 认证服务:Logto身份认证系统
- Logto数据库:独立PostgreSQL存储认证数据
服务间通过Docker内部网络通信,对外暴露必要端口。完整配置文件:docker-compose.yml
环境准备与依赖
部署前需确保环境满足以下要求:
- Docker Engine 20.10+
- Docker Compose v2+
- 至少2GB可用内存
- 10GB磁盘空间
官方推荐通过项目根目录的README.md或README.zh-CN.md获取最新环境要求,其中明确记载了docker-compose up -d启动命令。
核心配置解析
数据库服务配置
PostgreSQL主数据库配置确保数据持久化与高可用性:
db:
restart: always
image: postgres:14-alpine
user: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: earthworm
volumes:
- data:/var/lib/postgres/main-data
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
测试数据库使用独立端口(5480)避免与主库冲突,便于并行开发测试。
认证服务集成
Logto服务配置实现完整的身份认证流程:
logto:
restart: always
depends_on:
logtoPostgres:
condition: service_healthy
image: svhd/logto:1.18.0
entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"]
ports:
- 3010:3010
- 3011:3011
environment:
- DB_URL=postgres://postgres:p0stgr3s@logtoPostgres:5432/logto
服务依赖健康检查确保数据库就绪后才启动,初始化命令自动完成数据库种子数据填充。
持久化存储设计
采用命名卷实现数据持久化:
volumes:
data:
driver: local
Logto数据库使用绑定挂载确保数据保存在项目目录:./.volumes/logto_db:/var/lib/postgresql/data
部署步骤与操作
1. 克隆项目代码
git clone https://gitcode.com/GitHub_Trending/ea/earthworm
cd GitHub_Trending/ea/earthworm
2. 启动所有服务
docker-compose up -d
该命令会后台启动所有服务组件,首次执行将自动拉取所需镜像。
3. 验证服务状态
docker-compose ps
正常运行时所有服务应显示"Up"状态。
服务访问与端口映射
部署完成后可通过以下端口访问各服务:
| 服务 | 端口 | 说明 |
|---|---|---|
| Logto认证 | 3010 | 用户认证入口 |
| Logto管理 | 3011 | 管理员控制台 |
| PostgreSQL | 5433 | 主数据库 |
| Redis | 6379 | 缓存服务 |
高级配置与扩展
环境变量定制
通过修改docker-compose.yml中的environment部分配置服务参数,关键环境变量包括:
DB_URL: 数据库连接字符串PORT: 应用服务端口ADMIN_PORT: 管理界面端口
服务扩展
如需增加服务实例或调整资源限制,可添加deploy配置:
services:
api:
deploy:
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 512M
常见问题处理
服务启动失败
检查依赖服务健康状态,特别是数据库服务需先完成初始化。查看日志获取详细错误信息:
docker-compose logs -f logto
数据备份策略
定期备份命名卷数据,PostgreSQL数据库可使用以下命令导出:
docker-compose exec db pg_dump -U postgres earthworm > backup.sql
监控与维护
通过Docker Compose内置命令进行日常维护:
- 查看日志:
docker-compose logs -f - 重启服务:
docker-compose restart api - 更新镜像:
docker-compose pull && docker-compose up -d
部署架构图
总结与最佳实践
Earthworm的Docker Compose配置实现了开发环境与生产部署的一致性,推荐以下最佳实践:
- 使用
.env文件管理敏感配置,避免直接修改docker-compose.yml - 定期备份volumes数据防止丢失
- 生产环境添加反向代理处理SSL终止
- 通过健康检查确保服务依赖顺序
完整部署文档可参考项目文档,更多高级配置选项请查阅官方文档。
部署过程中遇到问题可参考常见问题或提交issue获取支持。
更多推荐




所有评论(0)