# [CMS Online Judge] Docker安裝教學 :::info 目錄: * [[CMS Online Judge] Docker安裝教學](/WKsC33XYRme4sM-Kkst_XA) * [[CMS Online Judge] 完整安裝教學](/qLOLKTjlQ6ivpN0vg4yb-g) * [[CMS Online Judge] 使用教學](/vzeJxoVGQPipzqd3R0_s9w) * [[CMS Online Judge] 互動題、Checker](/cA70QEPVRROxvTxYujMTcw) * [[CMS Online Judge] 給系統管理者的一些建議](/EOf5VvLOSM6BTjbVfb7vRg) [Github連結](https://github.com/erichung09060/cms) 前言:         Docker安裝簡易方便,但在Docker中跑cms會使效率降低,可能會導致本來不會超時的code變成TLE,另外,如果參賽者眾多也建議使用直接安裝在電腦上的方式去運行CMS,比較有效率且保險。 ::: :::success **主機環境:** 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/erichung9060/cms.git && cd cms ``` **Step. 4 執行docker compose** ``` sudo docker-compose up -d ``` **Step. 5 建立Admin帳號** ``` sudo docker exec -t cms sudo cmsAddAdmin admin ``` 接著打開瀏覽器並輸入以下網址就可使用啦 :::success 參賽者介面:`localhost:8888` 管理員介面:`localhost:8889` 計分板:`localhost:8890` ::: :::warning 報錯有分兩種,一種是docker的報錯,另一種則是cms的報錯。遇到前者可以把Step 4的`-d`參數拿掉,docker就會顯示詳細的log。遇到後者則可以先進入container並輸入`cmsLogService`即可看到cms詳細的log。 進到管理員介面後,預設的比賽是[這場](https://github.com/cms-dev/con_test.git),你需要在裡面找到Solution(在每一題的sol資料夾底下),並上傳cms測試各種語言是否能編譯及執行。 ::: 另外,如果想要切換比賽可以執行以下步驟 : **Step. 1 修改docker file** ``` vim docker-compose.yml ``` 在第38行找到`cmsResourceService -a 1;`,並把最後面的數字改成要開啟的比賽編號,編號為操作管理員介面進到該比賽後,網址列最後的數字。 ![](https://i.imgur.com/NseQCv9.png) **Step. 2 執行docker compose** (可直接執行,不需暫停container) ``` sudo docker-compose up -d ``` :::danger DB會存在本機上,你把container刪掉重新compose後比賽還是會在,如要完全刪除比賽請執行以下指令,執行前請三思(docker中的所有比賽將會被完全刪除)。 ``` sudo rm -rf /cms_docker_postgresql_data ``` :::