Docker搭建codecombat本地服务
HDUZN

这是个游戏编程网站,可以一边游戏一边学编程(Python),感觉挺有意思,就去官网玩了下。

然后玩了4-5关后,都不能玩了,订阅需要99/月。遂作罢。

偶然看到网上有教程,可以用Docker直接搭这个本地服务的,然后就试了下,还真成功了!就在Win10的电脑上直接搭建成功了!用Docker挺简单的。

一、Docker安装

网上教程、安装方法都有,Docker常用的一些命令看这篇:Docker常用命令

Docker使用的一般步骤

  • 拉取一个镜像(docker pull
  • 创建一个容器(docker run
  • 在容器中运行命令(docker exec

二、创建codecombat容器

1.拉取codecombat镜像

打开命令提示符或PowerShell(管理员),运行以下命令:

1
2
3
4
5
# 拉取codecombat镜像
docker pull operepo/ope-codecombat

# pull下载完后,可以查看镜像
docker images

如果下载慢,卡住了,有问题;可以重新运行命令pull一下。

2.下载需要的数据包

没有这个数据包,会无法运行。
下载地址(别人分享的):
https://cloud.189.cn/t/IJzmuqz2u673 (访问码:c1wi)

codecombat目录下有个:dump.tar.gz,就下载这个。

3.创建mycodecombat容器

创建访问端口为3020的容器:

1
docker run -itd --name mycodecombat -p 0.0.0.0:3020:3000 operepo/ope-codecombat /bin/bash

参数解释

-it:这个就是启动容器都会带,不用管
-d:表示后台运行
–name mycodecombat:容器名称为mycodecombat,可以自定义
-p 0.0.0.0:3020:3000:表示把容器中的3000端口映射到本机的3020端口,这个3020也是自定义

三、导入dump.tar.gz数据

1.容器内开启数据库服务(不要关闭窗口)

打开一个PowerShell,

1
2
3
4
5
# 1).进入容器
docker exec -it mycodecombat /bin/bash

# 2).容器内开启数据库服务(不要关闭窗口)
cd /home/coco/codecombat && ./bin/coco-mongodb

2.导入dump.tar.gz数据

打开另一个PowerShell,进入放dump.tar.gz数据压缩包的目录,

1
2
3
4
5
6
7
8
# 1).把数据包dump.tar.gz复制到容器内
docker cp dump.tar.gz mycodecombat:/home/coco/codecombat/data/
# 2).进入容器
docker exec -it mycodecombat /bin/bash
# 3).进入放数据的data目录
cd /home/coco/codecombat/data/
# 3).解压
tar -zxvf dump.tar.gz

3.容器内开启web服务(不要关闭窗口)

1
cd /home/coco && sh start.sh

两个窗口(一个数据库服务、一个web服务都不能关闭)
PS.报错的话,先重启下数据库服务,再重启web服务。

四、进入游戏

访问:http://127.0.0.1:3020 或自己电脑的 http://[ip]:3020 都可以。

直接点击开始游戏 开始。

PS.如果有的开了ipv6,可能用ip和127.0.0.1都无法访问,试一下:localhost:3020
ping localhost 看一下,是不是[::1],那就是ipv6。
解决方法,在hosts文件添加一句127.0.0.1 localhost就行。这样正常情况,3种都是可以访问的。

五、Ubuntu20.04中用Docker搭建Codecombat

用Docker么,跟在Windows中别的差别不大。就是在开启数据库服务和Web服务的时候,不要直接开,在后台运行就行了。

1.开启数据库服务

1
2
3
4
5
6
# Windows
cd /home/coco/codecombat && ./bin/coco-mongodb

# Ubuntu(用nohup后台运行,会生成一个PID进程号,用kill可结束进程就行)
cd /home/coco/codecombat
nohup ./bin/coco-mongodb > mycoco-mongodb.log 2>&1 &

2.开启web服务

1
2
3
4
5
6
# Windows
cd /home/coco && sh start.sh

# Ubuntu,mystart.log这些是日志名,随意取
cd /home/coco
nohup sh start.sh > mystart.log 2>&1 &

六、上帝模式

上帝模式就是游戏里所有的都解锁了,都可以玩了。不用等通关去解锁。
PS.里面有几关可能数据有问题,玩不了。所以开了上帝模式,其它的就不影响了。

1.注册独立账号

打开 http://127.0.0.1:3020 ,点击【注册】,要选择【独立账号】。
用个自己的邮箱和账号(英文就行),比如我的账号名为:abccba

注意:出生日期往前面选一点,选择1990年之前,否则判定不是家长,就无法注册。

2.开启“管理”和“上帝模式”

1
2
3
4
5
6
7
8
# 1).进入容器
docker exec -it mycodecombat /bin/bash
# 2).打开数据库
mongo
# 3).使用cocoo数据库
use coco
# 4).将abccba账号升级为“上帝模式”,这里abccba为你自己注册时候用的名字
db.users.update({'name':'abccba'},{$set:{'earned.gems':9999999,permissions:["godmode","admin"]}},true,false);

再登录这个账号,就能看到全部是解锁状态啦。爽歪歪!

参考:docker搭建codecombat本地服务教程

七、修改用户密码

1
2
3
4
5
6
7
8
9
10
11
12
# 1).进入容器
docker exec -it mycodecombat /bin/bash
# 2).打开数据库
mongo
# 3).使用cocoo数据库
use coco
# 4).查看用户abccba密码
db.users.find({name: 'abccba'}, {name: 1, passwordHash: 1})
# 5).查看用户所有信息
db.users.find({name: 'abccba'})
# 6).修改用户abccba密码
db.users.updateOne({name: 'abccba'}, {$set: {passwordHash: '977aa9a1ce6a580116484f227cca6ded1d82f37987c22121748ff1625640a4623c52e0f420420d15bb89ae680e3f27cb5d7d92d1a2c738fae5d753d66c94c9e8'}})

修改密码的时候,因为是修改为 passwordHash 值,所以不知道的话可以创建个新的账号,看一下这个账号的密码,然后用这个就可以了。

  • 本文标题:Docker搭建codecombat本地服务
  • 本文作者:HDUZN
  • 创建时间:2022-10-25 21:06:03
  • 本文链接:http://hduzn.cn/2022/10/25/Docker搭建codecombat本地服务/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论