目录
一、打开Ubuntu环境
我用夸克网盘给你分享了「codecombat.zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。(本文章个人项目部署练手,不要触犯法律责任)
/~e71e382pF1~:/
链接:https://pan.quark.cn/s/b44d80b9ba30
1.安装压缩包
安装codecombat的LINUX部署压缩包,可以放在桌面上。
然后进入Ubuntu系统,安装VMware tools
# 更新软件源 sudo apt update
下面两种方式自选:
# 安装适用于桌面版的工具 sudo apt install open-vm-tools-desktop
# 若是服务器版(无图形界面) sudo apt install open-vm-tools
# 重启生效 sudo reboot
# 检查是否安装了桌面版工具
dpkg -l | grep open-vm-tools-desktop
方法一:拖动式传输文件本地到Ubuntu
重启虚拟机,然后进入设置打开共享文件夹。
低版本改了下面这个还是可以托揣文件的,高版本24+的不行。
打开终端切换到root用户sudo su
进入这个目录 cd /etc/gdm3 展开ls 安装vim:sudo apt install vim
编写这个文件:vim custom.conf
找到这个参数
按i修改,把前面的#删掉,然后按Esc键,输入:x保存退出。
输入reboot重启,重启之后,进入主目录,新建一个文件夹code。
然后把刚下的本地包拉进去。(高版本Ubuntu行不通)
高版本用共享文件,在设置把本地要共享的文件夹位置,选中。
启用那个添加
重启一下就有了。然后移动到code文件夹内。
方法二:如果不能拖动,也不用着急,用另一种方法。
同样的在本地创建共享文件夹,然后在vm里面设置到Linux的共享文件夹。
第二步打开Ubuntu,然后找到文件夹。左边最底下那个其它位置,然后点Ubuntu,找配置文件。
这个位置mnt/hgfs,最开始没设置,正常情况都是显示空文件夹。
然后打开终端输入sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
这是特殊情况:如果没有这个文件夹那输入sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt -o allow_other(正常情况不用管这一步)
就会显示本地共享文件。
二、开始解压该文件
Ubuntu的硬盘要大一点,至少100g
把文件夹复制到桌面上面:sudo chmod -R 777 /mnt/hgfs/vm_share
然后进入该文件夹:cd ~/桌面/codecombat
开始解压文件:unzip codecombat.zip
要里面两个子文件压缩包。
三、下载docker部署
下载:sudo apt install docker.io
导入镜像:sudo docker load < codecombat.tar
创建数据目录:sudo mkdir ~/桌面/codecombat/codecombat/{data,mongo} -pv
四、部署文件包
创建Ubuntu本地文件夹
然后删除data里面的第一个空文件夹。
把这个0字节的dump.tar.gz缓存删掉:sudo rm -rf dump.tar.gz
然后把下载的压缩包下载到这里来:
解压项目:sudo tar -zxvf dump.tar.gz
停止正在运行的容器:sudo docker stop $(sudo docker ps -q)
删除所有已停止的容器:sudo docker rm $(sudo docker ps -aq)
查看现在存在的容器(应为空):sudo docker ps
五、部署docker并查看效果
运行容器:sudo docker run -id \
-v ~/桌面/codecombat/codecombat/data:/home/coco/codecombat/data \
-v ~/桌面/codecombat/codecombat/mongo:/home/coco/codecombat/mongo \
-p 9485:9485 \
-p 13000:3000 \
operepo/ope-codecombat:latest
# 查看正在运行的容器(包含 ID)
sudo docker ps
sudo docker restart (实际ID)
访问服务器端口http://localhost:13000
注册独立账号。
然后查看服务器后台:sudo docker exec -it (实际容器ID) bash
mongo相当于数据库
更改数据内容:use coco
输入:记得把admin更改为自己的刚注册的用户名。
db.users.update({'name':'admin'},{$set:{'earned.gems':9999999, permissions:["godmode","admin"]}},true,false);
进网站刷新,所有都显示了。
六、开机自启动
最后设置开机自启动:
sudo nano /etc/systemd/system/codecombat.service
步骤 1:创建 systemd 服务文件
执行以下命令创建服务配置文件:sudo nano /etc/systemd/system/codecombat.service
步骤 2:写入配置内容
在打开的编辑器中,粘贴以下内容(直接使用你的容器 ID 和名称):
[Unit]
Description=CodeCombat Docker 容器自启动服务
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
# 启动容器(同时指定 ID 和名称,确保准确性)
ExecStart=/usr/bin/docker start 容器id 容器名称
# 停止容器
ExecStop=/usr/bin/docker stop 容器id 容器名称
# 服务异常时自动重启
Restart=on-failure
[Install]
WantedBy=multi-user.target
步骤 3:保存并退出编辑器
按下 Ctrl + X(退出)
输入 Y(确认保存)
按下 Enter(使用默认文件名)
步骤 4:启用并启动服务
重新加载 systemd 配置,让新服务生效:
sudo systemctl daemon-reload
启用开机自启动:
sudo systemctl enable codecombat.service
手动启动服务(验证是否正常工作):
sudo systemctl start codecombat.service
步骤 5:验证配置是否成功
查看服务状态:
sudo systemctl status codecombat.service