青島OJ(QingdaoU/OnlineJudge)的開發與使用(2)——整合前端


原文鏈接:這里
0.前言

上一篇中,我們下載了前端代碼並修改了前端代碼,並成功運行了修改過的前端代碼,這一片中我們將修改過的前端代碼更新到服務端。

思路一個有兩種,第一種是將前端代碼掛載到服務器上。另一種是將前端代碼打包成鏡像文件寫道docker-compose.yml文件中。

1.前端代碼掛載到服務器

我們將上一篇修改過的代碼打開,切換到相應的目錄,然后執行

npm run build

等待一會,會提示成功

這個時候我們前端的文件夾會多一個dist文件夾,這時我們打包后的文件夾。

我們將dist文件夾整個復制到docker一鍵安裝的目錄下的一個文件夾

然后我們打開docker-compose.yml ,在volumes下面增加一行:

/www/QDOJ/OnlineJudgeDeploy/data/backend/dist:/app/dist

冒號前面的要改成實際目錄。

我這里因為在目錄下所以直接從data一級目錄寫。

然后可以看到我們修改后的中文的版本已經替換掉。(有的需要在docker-compose.yml所在文件夾執行”docker-compose up -d”命令)

2.前端文件打包成鏡像

第一種方法比較簡單,但是不符合一鍵安裝的思想,如果你的修改的版本確定了可以一鍵打包,寫到docker-compose.yml 文件中。

(1)在此之前:我們需要在阿里雲上注冊一個docker的鏡像倉庫。

注冊方法及簡單使用方法請點這里。

(2)然后我們需要將onlinejudge恢復到最初始的狀態,就是你一鍵安裝完畢那個狀態。(如果你在上一步更改過docker-compose.yml 文件,記得改回來並重新docker-compose up -d)

(3)然后切換到我們修改過的前端的目錄下,先查看下我們前端鏡像的ID

docker ps -a

CONTAINER ID        IMAGE                                                        COMMAND                  CREATED             STATUS                   PORTS                                         NAMES
5f9ae32a7349        registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_backend     "/bin/sh -c /app/dep…"   11 minutes ago      Up 4 minutes (healthy)   0.0.0.0:443->1443/tcp, 0.0.0.0:80->8000/tcp   oj-backend
64a37ad3e582        redis:4.0-alpine                                             "docker-entrypoint.s…"   13 hours ago        Up 6 minutes             6379/tcp                                      oj-redis
582049a81a00        registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_server   "/bin/sh -c /code/en…"   13 hours ago        Up 6 minutes (healthy)   8080/tcp                                      judge-server
9fc5e96326d4        postgres:10-alpine                                           "docker-entrypoint.s…"   13 hours ago        Up 6 minutes             5432/tcp                                      oj-postgres

(4)先把oj-backend的容器ID拷貝下來,一會要用。

然后我們執行

NODE_ENV=production npm run build:dll

然后

npm run build

(5)打包完成后,我們還是把dist里的內容注入到docker容器中,我們執行

docker cp ./dist  5f9ae32a7349:/app/
#這里 5f9ae32a7349  是我們剛才查看的oj-backend的容器ID,注意容器ID和冒號之間沒有空格

(6)然后將注入后的容器打包成本地鏡像

docker commit -m "提示信息" -a "作者"   容器ID  鏡像名稱
docker images

//其中,容器ID是上面的
5f9ae32a7349,鏡像名稱可以自己起一個,成功之后會有一個值生成

執行docker images后會有以下界面,我們復制剛才我們創建的鏡像ID: 0fe727ff77e7,一會要用.

(7)把打包好的鏡像push到阿里雲倉庫

根據這篇文章中提到的阿里雲倉庫的注冊方法,阿里提供了pull到倉庫的方法, 建議打開你自己復制下來以備后用.

sudo docker login --username=你的用戶名 registry.cn-qingdao.aliyuncs.com
sudo docker tag [鏡像ID] registry.cn-qingdao.aliyuncs.com/你的命名空間/qdoj:[鏡像版本號]
sudo docker push registry.cn-qingdao.aliyuncs.com/你的命名空間/qdoj:[鏡像版本號]

#注意,提交的時候沒有中括號

等待一會就push成功了.

然后可以在”鏡像版本”中看到上傳的版本.

然后我們可以可以復制上傳完畢后的倉庫的公有地址,把他復制到docker-compose.yml文件中,注意鏡像地址要帶版本號.

保存之后,就在一鍵安裝文件夾下面重新 執行 docker-compose up -d

重新運行后就可以直接在瀏覽器里看了.


3.利用寶塔自帶docker來生成

前面的到注入部分都一樣,注入之后,點擊”生成鏡像”

把必要信息填入

然后,根據你阿里雲的信息把內容全部填入,這里”倉庫類型”要選”其他倉庫”

然后點擊”推送”

能在阿里雲里看到版本信息表示正常(但是這個地方顯示推送成功並沒有在阿里雲里看到版本信息,目前還不知道為什么)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM