前言
- 服務端部署:由於並沒有建立全鏈路的自動化部署,目前還需要到雲伺服器上進行環境製作(資料庫,Nginx),並拉取後端服務進行部署
- 小程式釋出:需要先完成服務端部署,保證應用正常可用
服務端部署
資料庫安裝與資料初始化
最開始的時候,我是直接將在作業系統上面安裝資料庫,後面發現遷移的時候還是不方便,即使我可以放棄資料庫中的資料,但是還是需要重新建立資料表結構。
所以,在這一次中,我編寫了一個Dockerfile指令碼,使用一個空資料庫作為模板,構建了postgis映象。基於此,我可以實現快速的遷移與部署。由於這是一個實驗性質的小程式,所以資料資產並不是十分重要(並不是說不安全,而是我可以丟棄),所以我可以安心的使用docker技術。在初始化postgis容器的時候,會同步釋放模板以建立資料庫。這將會帶來一個問題是:如果重新建立容器,那麼將會得到一個全新的資料庫。當然你可以把資料庫的data目錄對映到宿主機上,應該可以解決這個問題。
docker build -t registry.cn-hangzhou.aliyuncs.com/fuyi-atlas/micro-weather-postgis:12-3.4 .
最後,我在本地完成該映象的製作後,將其推送到我的阿里雲映象倉庫中,便於後續使用。你可以註冊一個阿里雲賬戶去免費啟用個人版的映象倉庫,也可以直接使用dockerhub。
docker push registry.cn-hangzhou.aliyuncs.com/fuyi-atlas/micro-weather-postgis:latest
應用部署
於本地完成映象製作,並推送到阿里雲映象倉庫中。
為了更方便的進行部署,我編寫了docker compose指令碼,用於將資料庫與應用服務端程式一併啟動。目前程式中有一個海報分享的功能,該功能實現中需要一些額外的中文字型的支援,所以需要將此部分中文字型放置到宿主機的某個目錄下,並在環境變數中指定該目錄,指令碼中會將該目錄對映該到容器內的/usr/share/fonts目錄下
對於圖片訪問,還是延續此前的實現,即在伺服器端生成分享海報,儲存到本地(指伺服器磁碟),而後透過Nginx代理訪問。由於目前的伺服器我是與他人共用,同時還需要配置域名證書,所以暫時沒有將Nginx的部署同步放置到docker compose指令碼中。
💡 由於部署中需要提供部分敏感資訊,比如:小程式的金鑰、天氣應用的key、docker映象倉庫地址。我將所有資訊以環境變數的方式進行佔位,透過docker compose的環境變數進行替換,即.env檔案
小程式釋出
小程式端的釋出就比較簡單了
- 先將base_url更換為正式環境的地址(我沒有提交此部分程式碼,你可以自己更改)
- 本次除錯沒有問題後,就可以上傳程式碼,即提交為體驗版本
- 而後使用體驗版本測試沒有問題,就可以提交稽核
- 稽核透過後,就可以釋出了
總體來看,本次釋出很順利,稽核在十分鐘就透過了。