CodeCombat Docker 部署(云服务器也可以)及自动跳转问题修复实录

发布于:2025-06-24 ⋅ 阅读:(16) ⋅ 点赞:(0)

CodeCombat Docker 部署(云服务器也可以)及自动跳转问题修复实录

本文分享我在公网服务器上使用 Docker 部署 CodeCombat 本地服的全过程,并详细讲解了如何解决外网访问时自动跳转到官方域名的问题。文章内容包括环境准备、部署步骤、数据导入、配置修改及权限调整,适合有一定 Docker 和 Linux 基础的开发者参考。


一、环境准备与 Docker 安装

使用国内镜像加速脚本安装 Docker,确保网络访问流畅:

bash <(curl -f -s --connect-timeout 10 --retry 3 https://linuxmirrors.cn/docker.sh) --source mirrors.tencent.com/docker-ce --source-registry docker.1ms.run --protocol https --install-latested true --close-firewall false --ignore-backup-tips

二、拉取并运行 CodeCombat 容器

执行以下命令启动 CodeCombat Docker 容器,映射本地目录和端口:

docker run -itd --restart=always \
 -p 443:3000 \
 -v /root/codecombat/data:/home/coco/codecombat/data \
 -v /root/codecombat/mongo:/home/coco/codecombat/mongo \
 --name codecombat \
 operepo/ope-codecombat
  • 这里将容器的 3000 端口映射到宿主机的 443 端口,方便外网使用 HTTPS 访问。

三、导入数据库备份数据

下载需要的数据包dump.tar.gz
没有这个数据包,会无法运行。下载地址(别人分享的):
https://cloud.189.cn/t/IJzmuqz2u673 (访问码:c1wi)
备用地址:https://cloudreve.57767.top:15678/s/n8C2
将数据库备份文件移动到宿主机对应目录,并解压:

mv dump.tar.gz /root/codecombat/data
tar -zxvf /root/dump.tar.gz -C /root/codecombat/data

四、进入容器启动服务

执行以下命令进入容器并启动 CodeCombat 服务:

docker exec -it codecombat bash
cd /home/coco
nohup ./start.sh > start.log 2>&1 &

五、修复自动跳转官方域名问题

通过查找相关配置文件定位自动跳转代码:

cd /home/coco/codecombat
grep -rn 'cn.codecombat.com' .

找到后,使用 sed 替换为自己的公网 IP:

sed -i 's|https://cn.codecombat.com|http://你的公网IP:443|g' <具体文件名>

注意替换命令中的 <具体文件名>,一般是代码里涉及跳转的配置或源码文件。


六、重启容器生效

docker restart codecombat

七、开启上帝模式(可选)

如需测试管理员权限,可通过 MongoDB 修改用户权限:

docker exec -it codecombat mongo
use coco
db.users.updateOne(
  { name: 'missdao' },
  { $set: { 'earned.gems': 9999999, permissions: ["godmode","admin"] } }
)
exit

八、补充说明

  • 权限问题:确保挂载的数据目录权限与容器运行用户匹配,避免启动失败。
  • 自动跳转原因:CodeCombat 源码里默认配置了中国地区的跳转域名,需要根据自己部署的公网 IP 或域名进行替换,避免访问时被强制跳转到官方地址。


网站公告

今日签到

点亮在社区的每一天
去签到