记录一次使用 Docker 部署轻量级代码托管服务的踩坑记录
最近在整理本地电脑的开发环境,发现各种环境依赖混杂在一起非常容易引发冲突。为了保持本地系统的整洁,并方便随时迁移,决定将一些常用的开发基础设施全部采用 Docker 容器化部署。
相比于庞大臃肿的大型托管平台,轻量级的代码托管方案(比如类似 Gitea 这种基于 Go 语言的程序)更适合个人开发者和小团队使用。容器化的好处在于拉取镜像后,只需要配置好 yaml 文件就能直接跑起来,完全不需要关心底层的依赖环境。
核心配置要点
在编写 docker-compose.yml 时,端口映射和数据卷挂载是最容易出错的地方:
# 注意映射宿主机的 SSH 端口以防冲突
ports:
- "3000:3000"
- "2222:22"
ports:
- "3000:3000"
- "2222:22"
有一个需要特别注意的坑:挂载本地的数据卷目录时,务必提前检查好宿主机的读写权限。如果权限配置不当,容器启动后可能会因为无法写入数据库文件或初始化配置而导致服务一直卡在 restarting 状态。
搞定这些挂载细节后,日后的版本升级和数据备份就只需要打包对应的持久化目录即可,整个服务的可控性大大增强了。