Earthworm容器化部署全攻略:从环境搭建到效率提升实践
开发环境的三大核心挑战
在现代软件开发流程中,环境配置往往成为团队协作和项目推进的隐形障碍。开发者经常面临以下困境:
版本迷宫困境
不同开发者本地环境中PostgreSQL版本差异导致数据结构不兼容,Redis配置参数混乱引发缓存机制失效,耗费大量时间在"我这里能运行"的调试循环中。
服务依赖困境
Logto认证服务部署需要独立数据库支持,手动配置时容易出现端口冲突、权限不足等问题,单环境准备平均耗时超过90分钟。
数据一致性困境
团队成员间数据库初始化脚本执行顺序不同,导致测试数据状态不一致,影响功能验证和Bug修复的准确性。
[!TIP] 开发效率提升关键:通过容器化技术将环境配置标准化,可使团队新成员上手时间从2小时缩短至10分钟,环境一致性问题减少85%以上。
容器化乐高:构建模块化开发环境
Earthworm采用容器化架构解决环境一致性问题,就像搭积木一样将不同服务组件组合成完整开发环境。每个容器作为独立模块,既保持功能完整性又实现灵活组合。
环境组件架构
graph LR
subgraph 数据层
A[主数据库容器<br/>postgres:14-alpine]
B[缓存服务容器<br/>redis:5-alpine]
C[认证数据库容器<br/>postgres:14-alpine]
end
subgraph 服务层
D[API服务] --> A
D --> B
E[Logto认证服务] --> C
end
subgraph 应用层
F[前端应用] --> D
F --> E
end
核心服务配置参数
| 组件名称 | 技术规格 | 资源需求 | 网络端口 |
|---|---|---|---|
| 主数据库 | PostgreSQL 14 | 1GB内存,10GB存储 | 5433:5432 |
| 缓存服务 | Redis 5 | 512MB内存 | 6379:6379 |
| 认证服务 | Logto 1.18.0 | 1GB内存 | 3010:3010, 3011:3011 |
避坑指南:所有容器默认使用桥接网络模式,需确保宿主机对应端口未被占用,可通过
netstat -tuln命令检查端口占用情况。
三步搭建法:环境部署实施指南
1. 环境准备阶段
系统要求验证
# 检查Docker版本(需24.0.0+)
docker --version # 示例输出:Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1
# 检查Node.js版本(需v20+)
node --version # 示例输出:v20.10.0
# 检查pnpm版本(需8+)
pnpm -v # 示例输出:8.15.4
资源配置建议
- 内存:最低8GB(推荐16GB),容器同时运行时内存占用约4-5GB
- 存储:至少20GB可用空间,包含镜像、依赖和数据文件
- 网络:稳定的互联网连接,首次部署需下载约3GB镜像
避坑指南:Linux用户需将当前用户加入docker用户组,避免每次命令前加sudo:
sudo usermod -aG docker $USER && newgrp docker
2. 项目部署阶段
代码获取与依赖安装
# 克隆代码库并进入项目根目录
git clone https://gitcode.com/GitHub_Trending/ea/earthworm && cd earthworm
# 启用corepack管理pnpm版本
corepack enable # 示例输出:Corepack enabled
# 安装项目依赖
pnpm install # 输出将显示各工作区依赖安装进度
环境变量配置
# 配置后端环境变量
cp ./apps/api/.env.example ./apps/api/.env
# 配置前端环境变量
cp ./apps/client/.env.example ./apps/client/.env
关键配置项说明(位于apps/api/.env):
DATABASE_URL=postgresql://postgres:password@localhost:5433/earthwormREDIS_URL=redis://localhost:6379LOGTO_ENDPOINT=http://localhost:3010
认证服务初始化
# 解压Logto数据库初始化数据
unzip logto_db_init_data.zip -d .volumes/ # 输出将显示解压进度
[!TIP] 初始管理员账户:admin/WkN7g5-i8ZrJckX,管理界面地址:http://localhost:3011
容器集群启动
# 启动所有容器服务
pnpm docker:start # 首次运行将下载所需镜像,耗时取决于网络速度
# 验证容器状态
docker compose ps # 应显示4个服务,状态均为Up
成功启动后状态示例:
NAME IMAGE COMMAND STATUS PORTS
earthworm_db_1 postgres:14-alpine "docker-entrypoint.s…" Up 2 minutes 0.0.0.0:5433->5432/tcp
earthworm_redis_1 redis:5-alpine "docker-entrypoint.s…" Up 2 minutes 0.0.0.0:6379->6379/tcp
earthworm_logto_1 svhd/logto:1.18.0 "sh -c 'npm run cli …" Up 2 minutes 0.0.0.0:3010->3010/tcp, 0.0.0.0:3011->3011/tcp
earthworm_logtoPostgres_1 postgres:14-alpine "docker-entrypoint.s…" Up 2 minutes 5432/tcp
避坑指南:若Logto容器启动失败,检查
.volumes/logto/postgres目录权限,可执行sudo chmod -R 777 .volumes/logto修复权限问题。
3. 应用初始化阶段
数据库结构与数据导入
# 创建数据库表结构
pnpm db:init # 输出将显示数据库迁移过程
# 导入初始课程数据
pnpm db:upload # 输出将显示数据导入进度和统计
开发服务器启动
# 启动后端API服务(默认端口3000)
pnpm dev:serve &
# 启动前端Nuxt服务(默认端口3001)
pnpm dev:client
验证点:此时访问http://localhost:3001应能看到Earthworm应用界面,显示课程学习界面。
环境健康检查清单
基础设施验证
- [ ] 所有Docker容器状态正常(
docker compose ps显示4个Up状态服务) - [ ] PostgreSQL端口可访问(
telnet localhost 5433能建立连接) - [ ] Redis服务响应正常(
redis-cli ping返回PONG) - [ ] Logto管理界面可访问(http://localhost:3011能打开登录页)
应用功能验证
- [ ] API服务返回状态(访问http://localhost:3000/api/health返回{"status":"ok"})
- [ ] 前端应用加载正常(http://localhost:3001无控制台错误)
- [ ] 数据库连接有效(
psql -h localhost -p 5433 -U postgres earthworm -c "SELECT COUNT(*) FROM courses"返回大于0的数值)
环境自测10问
- 能否通过http://localhost:3001访问应用首页?
- 数据库连接字符串中的端口是否为5433?
- Logto服务是否在3010端口监听?
- 执行
pnpm docker:stop后所有容器是否停止? .env文件是否添加到.gitignore中?- Redis缓存是否正常工作(可通过API响应时间判断)?
- 数据库初始化脚本是否成功执行?
- 前端开发热重载是否正常工作?
- 能否通过Logto管理界面修改用户权限?
- 项目根目录下是否存在
.volumes目录?
避坑指南:开发过程中如遇服务异常,优先检查容器日志:
docker logs <容器名称>,常见问题可参考项目文档中的故障排除章节。
通过以上步骤,您已成功搭建Earthworm开发环境。这种容器化方案不仅解决了环境一致性问题,还大幅提升了团队协作效率,让开发者能够将更多精力投入到功能开发而非环境配置中。随着项目的推进,您还可以根据需要扩展容器架构,添加如Elasticsearch等更多服务组件。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust089- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
Hy3-previewHy3 preview 是由腾讯混元团队研发的2950亿参数混合专家(Mixture-of-Experts, MoE)模型,包含210亿激活参数和38亿MTP层参数。Hy3 preview是在我们重构的基础设施上训练的首款模型,也是目前发布的性能最强的模型。该模型在复杂推理、指令遵循、上下文学习、代码生成及智能体任务等方面均实现了显著提升。Python00
