CodiMD/HackMD Docker Compose 部署指南
2025-07-06 06:55:24作者:苗圣禹Peter
概述
CodiMD/HackMD 是一款开源的协作式 Markdown 编辑器,支持多人实时协作编辑文档。本文将通过 Docker Compose 方式详细介绍如何部署 CodiMD/HackMD 服务,帮助开发者快速搭建自己的协作笔记平台。
环境准备
在开始部署前,请确保系统已安装以下组件:
- Docker 18.06+
- Docker Compose 1.22+
服务架构解析
该 Docker Compose 文件定义了两个核心服务:
- 数据库服务:使用 PostgreSQL 11.6 Alpine 版本作为数据存储
- 应用服务:运行 CodiMD/HackMD 2.5.3 版本
详细配置说明
数据库服务配置
database:
image: postgres:11.6-alpine
environment:
- POSTGRES_USER=codimd
- POSTGRES_PASSWORD=change_password
- POSTGRES_DB=codimd
volumes:
- "database-data:/var/lib/postgresql/data"
restart: always
关键点说明:
- 使用轻量级的 Alpine 版本 PostgreSQL 镜像
- 默认用户名为
codimd
,密码为change_password
(生产环境必须修改) - 数据库名称为
codimd
- 通过卷挂载实现数据持久化
- 设置自动重启策略确保服务高可用
应用服务配置
codimd:
image: nabo.codimd.dev/hackmdio/hackmd:2.5.3
environment:
- CMD_DB_URL=postgres://codimd:change_password@database/codimd
- CMD_USECDN=false
depends_on:
- database
ports:
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
关键点说明:
- 使用官方 2.5.3 版本镜像
- 通过环境变量配置数据库连接(需与数据库服务配置一致)
- 禁用 CDN 资源加载(适合内网部署)
- 声明依赖关系确保数据库先启动
- 映射 3000 端口到主机
- 上传目录通过卷挂载实现持久化
- 设置自动重启策略
数据持久化方案
该配置通过 Docker 卷实现了两个关键数据的持久化:
database-data
:存储 PostgreSQL 数据库文件upload-data
:存储用户上传的文件
这种设计确保了即使容器重启,数据也不会丢失。
部署步骤
- 创建
docker-compose.yml
文件并填入上述内容 - 修改默认密码(强烈建议)
- 执行部署命令:
docker-compose up -d
- 等待服务启动完成后,访问
http://localhost:3000
自定义构建选项
配置文件中提供了自定义构建的注释选项,如需使用:
- 取消注释
build
部分 - 确保已准备好构建环境
- 使用以下命令构建并启动:
docker-compose -f docker-compose.yml up --build
安全建议
- 修改默认密码:必须修改数据库和应用中的默认密码
- 启用 HTTPS:生产环境应配置反向代理并启用 HTTPS
- 定期备份:定期备份数据库卷和上传目录
- 访问控制:考虑配置身份验证机制
常见问题排查
- 端口冲突:确保主机 3000 端口未被占用
- 数据库连接失败:检查数据库服务是否正常启动
- 权限问题:确保 Docker 有足够的权限创建卷
- 资源不足:如遇性能问题,可考虑增加资源限制
通过以上配置和说明,您应该能够成功部署一个功能完整的 CodiMD/HackMD 协作平台。根据实际需求,您还可以进一步调整配置参数以优化性能和安全性。