原文鏈接:這里
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來生成
前面的到注入部分都一樣,注入之后,點擊”生成鏡像”
把必要信息填入
然后,根據你阿里雲的信息把內容全部填入,這里”倉庫類型”要選”其他倉庫”
然后點擊”推送”
能在阿里雲里看到版本信息表示正常(但是這個地方顯示推送成功並沒有在阿里雲里看到版本信息,目前還不知道為什么)