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带来的学习体验!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0245- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python05
