Earthworm开源项目快速部署指南:10分钟容器化开发环境搭建
一、环境痛点分析:从2小时到10分钟的跨越
作为开发者,我们都经历过本地环境配置的"噩梦":PostgreSQL版本冲突导致数据库连接失败、Redis配置繁琐占用大量调试时间、Logto认证服务部署步骤复杂易出错。这些问题往往让我们在真正开始开发前就耗费1-2小时,甚至出现"我明明按文档配置了,为什么还是跑不起来"的困境。
Earthworm项目通过Docker容器化方案彻底解决了这些问题。容器化部署(将应用及其依赖打包成标准化单元)能确保开发环境一致性,让我们把宝贵的时间真正用在功能开发上。
开发效率提升对比
| 环境配置方式 | 平均耗时 | 问题发生率 | 环境一致性 |
|---|---|---|---|
| 传统手动配置 | 120分钟 | 65% | 低 |
| Docker容器化 | 10分钟 | 8% | 高 |
二、容器化部署新方案:五步实现一键启动
环境检查清单
- [ ] Docker 24.0.0+(容器化运行环境)
- [ ] Node.js v20+(JavaScript运行时)
- [ ] pnpm 8+(包管理工具)
- [ ] 8GB以上内存(推荐16GB)
- [ ] 10GB空闲磁盘空间
环境部署时间轴
timeline
title Earthworm环境部署流程
section 准备阶段
克隆代码库 : 1分钟
安装依赖 : 3分钟
section 配置阶段
环境变量设置 : 2分钟
Logto数据初始化 : 1分钟
section 启动阶段
Docker服务集群 : 2分钟
数据库初始化 : 1分钟
① 代码准备与依赖安装
ℹ️ 首先获取项目代码并安装依赖包,这是所有开发的基础步骤。
# 克隆项目代码库
git clone https://gitcode.com/GitHub_Trending/ea/earthworm
cd earthworm
# 启用corepack确保pnpm可用
corepack enable
# 安装项目所有依赖(包含工作区依赖)
pnpm install
⚠️ 常见误区:直接使用npm install会导致依赖版本不一致,必须使用pnpm安装。
② 环境变量配置
ℹ️ 环境变量是连接应用与外部服务的桥梁,正确配置是系统正常运行的关键。
# 配置后端环境变量
cp ./apps/api/.env.example ./apps/api/.env
# 配置前端环境变量
cp ./apps/client/.env.example ./apps/client/.env
[!TIP] 核心配置项说明(apps/api/.env):
- DATABASE_URL:PostgreSQL数据库连接地址 格式:postgresql://用户名:密码@主机:端口/数据库名
- REDIS_URL:Redis缓存服务地址
- LOGTO_ENDPOINT:认证服务接口地址
③ Logto认证数据初始化
ℹ️ Logto是Earthworm的认证系统,需要预置初始数据才能正常工作。
# 解压Logto数据库初始化数据到指定目录
unzip logto_db_init_data.zip -d .volumes/
✅ 初始管理员账户:admin/WkN7g5-i8ZrJckX
✅ 管理界面地址:http://localhost:3011
④ Docker服务集群启动
ℹ️ 通过docker-compose启动所有依赖服务,包括PostgreSQL、Redis和Logto。
# 启动所有Docker服务(后台运行)
pnpm docker:start
# 查看服务状态,确保所有服务都显示"Up"状态
docker compose ps
⚠️ 注意:启动前建议检查端口占用情况,避免5433、6379、3010等端口被占用。可以使用netstat -tuln命令查看端口使用情况。
Earthworm容器架构采用多服务协同设计:
- 主数据库服务:存储应用核心数据
- Redis缓存服务:提升系统响应速度
- Logto认证服务:处理用户身份验证
- Logto专用数据库:存储认证相关数据
⑤ 应用数据库初始化
ℹ️ 创建数据库表结构并导入初始课程数据,让系统具备基础运行能力。
# 创建数据表结构
pnpm db:init
# 导入初始课程数据
pnpm db:upload
✅ 完成后,系统已具备基本运行条件,接下来可以启动开发服务器了。
三、环境验证与扩展:从基础运行到问题排查
开发服务器启动
# 启动后端API服务(默认端口3000)
pnpm dev:serve &
# 启动前端Nuxt服务(默认端口3010)
pnpm dev:client
环境功能验证
✅ 前端应用验证:访问http://localhost:3001,应能看到Earthworm主界面
✅ 数据库连接验证:
# 连接主数据库
psql -h localhost -p 5433 -U postgres earthworm
# 查询课程数据,应返回导入的课程数量
SELECT COUNT(*) FROM courses;
常见问题排查指南
Docker权限问题
当出现"permission denied while trying to connect to the Docker daemon socket"错误时:
# 将当前用户添加到docker用户组
sudo usermod -aG docker $USER
# 立即应用用户组变更(无需重启)
newgrp docker
数据库连接失败
检查docker-compose.yml中的数据库配置:
services:
db:
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: earthworm
确保与.env文件中的DATABASE_URL配置一致。
Logto认证服务异常
查看Logto服务日志定位问题:
docker logs earthworm_logto_1
开发环境管理命令集
| 命令 | 用途 |
|---|---|
| pnpm docker:start | 启动所有Docker服务 |
| pnpm docker:stop | 停止所有Docker服务 |
| pnpm docker:delete | 删除容器(保留数据卷) |
| pnpm docker:down | 完全清理(含数据卷) |
| pnpm db:migrate | 执行数据库迁移 |
⚠️ 常见误区:使用pnpm docker:down会删除所有数据,仅在需要完全重置环境时使用。
总结
通过容器化部署方案,我们成功将Earthworm开发环境搭建时间从2小时压缩到10分钟,同时大幅降低了环境配置问题的发生率。这种方式不仅适用于Earthworm项目,也可以作为其他开源项目配置的参考范例。
对于后续开发,可以参考项目中的贡献指南和开发规范,让协作更加顺畅。记住,一个稳定的开发环境是高效开发的基础,花10分钟做好环境配置,能为后续开发节省数小时的调试时间。
祝大家开发顺利,享受Earthworm带来的学习体验!
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 StartedRust0194
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0121
MiMo-V2.5-Pro-FP4-DFlashMiMo-V2.5-Pro-FP4-DFlash 是驱动 MiMo-V2.5-Pro-UltraSpeed 的底层模型: FP4 量化骨干网络:对 MoE 专家采用 MXFP4 量化,同时保持模型其他部分的更高精度,在几乎无损质量的前提下,显著减小模型体积并降低内存带宽压力。 BF16 DFlash 草稿生成器:用于块扩散推测解码,每次前向传播可生成一整个块的 tokens,并让骨干网络一步完成验证。 两者协同作用,既降低了每参数的位宽,又减少了骨干网络前向传播的次数,而这两者正是万亿参数模型解码过程中的两大主要成本来源。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
AstrBot✨ 易上手的多平台 LLM 聊天机器人及开发框架 ✨ 平台支持 QQ、QQ频道、Telegram、微信、企微、飞书 | OpenAI、DeepSeek、Gemini、硅基流动、月之暗面、Ollama、OneAPI、Dify 等。附带 WebUI。Python05
handy-ollama动手学Ollama,CPU玩转大模型部署,在线阅读地址:https://datawhalechina.github.io/handy-ollama/Jupyter Notebook06
