上一篇我們成功部署Gitea在容器執行個體(Azure Container Instances)而由於容器無狀態的特性當遇到當機或重啟時原本存在容器內的資料也就煙消雲散,因此在部署應用程式服務之前先把Gitea Container外接一個儲存體(這樣就可以保存Gitea的狀態),網路上有很多種方式這邊我選用Azure提供的「儲存體帳號」來試試看,那為什麼會選「應用程式服務」?主要是部署服務它是我的首選加上功能多樣也可以直接套用Docker Hub上的容器,最重要的是它提供了開發者免費的方案(有免費就加分👍)
💡容器執行個體(Azure Container Instances)也可以外接儲存體帳戶哦!
建立儲存體帳戶
前言提到我們需要一個存儲空間用於存放Gitea整個根目錄內所有的資料夾,所以我們先來建立存儲空間,回到Microsoft Azure的控制台「所有服務」→「儲存體」→「儲存體帳戶」→「建立儲存體帳戶」
建立儲存體帳戶 - 基本設定
- 資源群組:這個一定要設定(管理用)
- 儲存體帳戶名稱:這個可以輸入任意名稱(記得都要小寫或是數字)
- 區域:這裡我們選擇「東亞」
- 效能:效能直接選擇「標準」
- 備援:由於我們是測試用的直接選擇本地,如果是很重要的資料建議是使用異地(當然價格應該也有所不同!)
建立儲存體帳戶 - 網路
- 網路連線:選擇「公用端點」💡 要注意的是「私人端點」無法用於一般用途v1儲存體帳戶哦!【點我前往】
- 網路路由:預設Microsoft網路路由即可
儲存體帳戶 - 檔案共用
這裡有兩個設定
- 名稱:檔案共用的名稱,可以隨意命名
- 階層:這裡我們選擇「交易最佳化」,如果只是用封存資料的話可以選擇非經常性
建立應用程式服務
建立應用程式服務 - 基本設定
- 資源群組:這個一定要設定(管理用)
- 名稱:輸入應用程式服務的名稱
- 發佈:使用Docker Hub上的容器選擇「Docker容器」
- 作業系統:作業系統直接選「Linux」
- 地區:選擇「East Asia」(這個好像會依照地區提供對應的系統資源其價格也會有所不同)
- Linux方案:如果一開始沒有方案的話,建立時會自動預設一個方案項目(記得看清楚如果設定很貴的方案就GG了)
- SKU和大小:這邊我們就按下變更大小,直接選擇免費的!
建立應用程式服務 - Docker
💡 由於我們選的發佈方式是Docker容器因此需要設定這個步驟
- 選項:單一容器
- 映像來源:選擇Docker Hub
- 存取類型:Gitea是公開類型的容器因此選擇「公開」
- 映像及標籤:這裡我們輸入Docker Hub上的路徑gitea/gitea
- 啟動命令:這邊可以設定啟動時要執行什麼指令,我們輸入以下命令
gitea -w / -C /custom --port 80
💡 -w 是可以預設工作目錄的位置,這裡我們要把工作目錄導到儲存體帳戶的檔案共用,因此使用斜線作為根目錄的位置「/」
-C (C是大寫,小寫c是設定config)是預設自定義文件夾的位置,我們使用「/custom」作為自定義文件夾的位置
--port 設定預設的Port,Gitea預設是3000,應用程式服務預設是80,因此要連線的話需要將Port導到80Port才可以使用
資源檢視
最後是「路徑對應」還記得一開始我們建立的「儲存體帳戶 - 檔案共用」嗎(終於輪到它了XD),我們可以在這裡將我們的應用程式服務串接到儲存體帳戶 - 檔案共用,選擇「新增Azure儲存體掛接」
- 名稱:這裡我會設定跟我的儲存體帳戶 - 檔案共用的名稱一致這樣比較方便辨識
- 設定選項:進階可以設定有金鑰的儲存體,我們沒設定因此直接預設「基本」即可
- 儲存體類型:因為檔案共用是檔案儲存體模式,所以我們選擇「Azure檔案儲存體」
- 儲存體容器:一開始如果有建立過儲存體帳戶-檔案共用就會直接出現在下拉選單提供選擇
- 裝載路徑:裝載路徑就是應用程式服務對應到的儲存體帳戶-檔案共用內的根目錄,這邊我們使用/data💡裝載路徑很重要!要記得自己設定的路徑名稱在等等設定Gitea的時候會用到
最後回到「概觀」然後「重新啟動」服務後就可以按下「瀏覽」了
執行應用程式服務
服務器成功啟動後就可以成功看到Gitea的安裝頁面到這邊我們先回到儲存體帳戶 - 檔案共用可以發現應用程式服務內的Gitea已經正確的裝載到了我們指定的路徑(可以看到Gitea自動產生的預設檔案資料夾)
回到Gitea安裝頁面看到儲存庫根目錄會自動抓到我們剛剛在儲存體掛接設定的「/data」,如果Gitea一開始預設不是/data的話那很有可能是前面的步驟有設定錯誤哦!
最後將所有的目錄都調整到「gitea資料夾」裡面
💡如果出現很多資料夾檔案表示路徑正確無誤XD
題外話:剛開始摸索Azure時在設定容器執行個體的時候有成功把存儲外接到儲存體帳戶的檔案共用內,但只要重啟Gitea的某些設定都還是會不見,後來發現是Gitea根目錄沒有設定好,導致一些基本設定的資料夾沒有放到儲存體帳戶的檔案共用內,所以重啟後自然那些資料夾就消失了,但也因此學到了原來Gitea根目錄的設定很重要啊!!XD
2022/01/20 補充
今天不知道是踩到Gitea的雷還是Docker的雷還是Azure的雷(應該是Gitea啦XD),服務器突然出現無法執行的問題
重啟後還是不行所以就跑去「記錄資料流」看Log發現了以下的錯誤訊息
Gitea is not supposed to be run as root. Sorry. If you need to use privileged TCP
ports please instead use setcap and the `cap_net_bind_service` permission
didn't respond to HTTP pings on port: 80
didn't respond to HTTP pings on port: 80
研究了一下是Gitea在我啟動前的1小時內發佈了新的latest版本導致執行時Docker Pull新版本時發生了一些問題(可能有什麼相容性問題吧XD),但總不能每次更新時發生錯誤我的服務器就要停擺吧!!於是就來記錄一下是如何調整Docker Pull時的版本吧!
💡服務之所以會重啟是因為Linux方案是免費的關係,太久沒有使用他就會自動關閉(休眠)所以才會有重啟的動作
0 Comments
張貼留言