Try   HackMD

[CMS Online Judge] Docker安裝教學

目錄:

Github連結

前言:
        Docker安裝簡易方便,但在Docker中跑cms會使效率降低,可能會導致本來不會超時的code變成TLE,另外,如果參賽者眾多也建議使用直接安裝在電腦上的方式去運行CMS,比較有效率且保險。

主機環境:
Cgroup Version : 1 (cms只允許v1)

查看Cgroup版本

sudo docker info | grep 'Cgroup Version'

如果是2要切換到1。

sudo sed -i '/GRUB_CMDLINE_LINUX=/c\GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"' /etc/default/grub
sudo update-grub
sudo reboot

安裝環境 : Ubuntu

Step. 1 更新所有套件

sudo apt update && sudo apt upgrade -y

Step. 2 安裝docker compose

sudo apt install docker-compose -y

Step. 3 下載cms

git clone https://github.com/erichung1113/cms.git && cd cms

Step. 4 執行docker compose

sudo docker-compose up -d

Step. 5 建立Admin帳號

sudo docker exec -t cms sudo cmsAddAdmin admin

接著打開瀏覽器並輸入以下網址就可使用啦

參賽者介面:localhost:8888
管理員介面:localhost:8889
計分板:localhost:8890

報錯有分兩種,一種是docker的報錯,另一種則是cms的報錯。遇到前者可以把Step 4的-d參數拿掉,docker就會顯示詳細的log。遇到後者則可以先進入container並輸入cmsLogService即可看到cms詳細的log。

進到管理員介面後,預設的比賽是這場,你需要在裡面找到Solution(在每一題的sol資料夾底下),並上傳cms測試各種語言是否能編譯及執行。

另外,如果想要切換比賽可以執行以下步驟 :

Step. 1 修改docker file

vim docker-compose.yml

在第38行找到cmsResourceService -a 1;,並把最後面的數字改成要開啟的比賽編號,編號為操作管理員介面進到該比賽後,網址列最後的數字。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Step. 2 執行docker compose
(可直接執行,不需暫停container)

sudo docker-compose up -d

DB會存在本機上,你把container刪掉重新compose後比賽還是會在,如要完全刪除比賽請執行以下指令,執行前請三思(docker中的所有比賽將會被完全刪除)。

sudo rm -rf /cms_docker_postgresql_data