1、背景介紹
此文檔是基於arm64架構服務器編寫的,寫此文檔時使用的是銀河麒麟系統。銀河麒麟系統自帶docker,所有我們不需要再安裝docker,而且銀河麒麟系統中的docker已經設置了開機自啟,我們不需要設置開機自啟。如果之后安裝單機版的電腦沒有docker,則需要我們在腳本中提供安裝docker的命令,並設置docker開機自啟。
2、單機版docker部署方案簡介
2.1:此方案根據mysql-server的arm64的鏡像和數據庫初始化sql來創建自己的mysql鏡像,根據aspnetcore的arm64的鏡像和后端項目代碼創建自己的鏡像,根據nginx的arm64鏡像和前端項目代碼創建自己的前端項目鏡像。
2.2:此方案使用shell腳本一鍵部署。在shell腳本中實現鏡像的加載與容器的運行。
2.3:由於此方案將數據庫也安裝在docker中,所以需要掛載數據到宿主機,防止數據丟失。
3、docker部署詳細教程以及遇到的坑
3.1:部署所需文件的結構介紹,如下圖:

每個文件或文件夾對應的左右請看箭頭后說明。注意:文件夾mysql8,rms_mysql.jar,rms_net.jar,rms_vue.jar,start.sh這五個是我們部署時所需要的,其余的只是在創建鏡像時需要使用,部署不需要。
3.2:core文件夾詳細介紹
此文件夾下包含一個叫api的文件夾,此文件夾又.netcore開發人員提供,為.netcore項目打好的包。api文件夾下包含一個appsetting.json的配置文件,修改此文件中的mysql數據庫連接信息。如下圖
此文件夾下還包含一個叫dockerfile的文件,這個文件是我們用來構建自己后端項目。注意此文件無后綴,可以使用記事本等編輯器打開。dockerfile內容如下圖,每一行命令及釋義請看圖片
3.3:db文件夾介紹
此文件夾下包含數據庫初始化腳本(core.sql)和dockerfile文件。dockerfile文件命令及釋義如下圖:
3.4:mysql8文件夾介紹
此文件夾為docker內數據庫容器在宿主機的掛載地址。如果不設置掛載,docker中數據庫容器被刪除后數據會丟失。這個文件夾是我先啟動數據庫容器,然后使用 docker exec -it db(容器名) bash此命令進入容器內部,然后將/var/lib/mysql文件夾拷貝到mysql8中。在數據庫容器啟動時會指定掛載文件地址,保證數據不丟失。
3.5:vue文件夾介紹
此文件夾包含dist文件夾,此文件夾為前端人員提供的前端打包好的項目。包含dockerfile文件和nginx.conf文件。
ngixn.conf文件為nginx的配置文件,如下圖:
dockerfile文件如下圖:
3.6 mysql.jar netcore.jar nginx.jar 這三個jar包為基礎鏡像,部署不需要。
3.7 rms_mysql.jar rms_net.jar rms_vue.jar 為我們自己創建的鏡像,時根據core,db,vue這三個文件夾下的dockfile文件和其他文件來創建的。部署時需要這三個鏡像。
3.8 start.sh為啟動腳本,客戶點擊此腳本選擇在終端中執行,可以完成安裝部署。腳本介紹如下圖: