CodeCombat:Docker 部署编程游戏平台
本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 21 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。
它是什么
开源的「写代码打游戏」平台,Python/JS 等语言教学场景常用。容器里用 supervisord 同时拉起 Node 应用和 MongoDB。
前置条件
- 一台 Linux 服务器(1C1G 起步;Java 类应用建议 2C4G 以上);
- 已安装 Docker 与 Compose v2,执行
docker compose version有版本号输出; - 所有示例里的 IP / 域名 / 密码都是占位符,实际部署请替换成自己的。
# 安装 Docker(已安装可跳过)
curl -fsSL https://get.docker.com | sh
# 目录约定:一个服务一个目录,后文的 ./data 均指栈目录内
mkdir -p /srv/docker/active/<stack> && cd /srv/docker/active/<stack>
镜像地址
operepo/ope-codecombat:latest
部署步骤
docker run -d \
--name codecombat \
--restart always \
-p 8541:3000 \
operepo/ope-codecombat:latest
浏览器打开 http://<SERVER_IP>:8541。
关键配置
- 容器内端口 3000,宿主机映射到 8541(示例);
COCO_MONGO_HOST=localhost:MongoDB 和主应用在同一个容器里;NODE_ENV=development:社区镜像默认是开发模式,不适合生产,仅适合演示/内部体验;- 镜像 3G+,首次拉取慢。
注意事项
- 该镜像不是官方维护的生产发行版,数据在容器内,
docker rm即数据全丢,需要持久化请自己挂卷或改数据目录; - 占用内存较高(Node + Mongo),2G 内存机器会 OOM;
- 只是拿来玩/教学可以,公网暴露前想清楚。
升级与回滚
# 升级 = 拉新镜像 + 重建容器(容器内数据会一起没掉)
docker pull operepo/ope-codecombat:latest
docker stop codecombat && docker rm codecombat
docker run -d --name codecombat --restart always -p 8541:3000 operepo/ope-codecombat:latest
# 需要留档时,整容器导出
docker export codecombat -o "codecombat-$(date +%F).tar"
- 该镜像没有声明数据卷,重要进度请自行在应用内导出;
- 升级前先
docker inspect记录原来的端口与启动参数,回滚时照抄。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果