建立於: 7年前 ( 更新: 7年前 )
前言
如何快速建立一個開箱即用的Gogs環境呢?本文介紹採用docker-compose.yml快速建立gogs環境。
想玩玩看,可至我的repo下載來試用看看:
https://github.com/DevinY/gogs
說明
在MacOs系統上,基本上就非常標準的docker-compose指令即可:docker-compose up -d
完全不需要建立資料庫或進行安裝畫面及任何設定。
啟動後,即可用瀏覽器,開啟localhost:10080,進行註冊。
第一個註冊的使用者即是系統管理者。
我初步測試,這套目前滿符合我的需求,比起gitlab,gogs是較簡單的。
在big5檔案編碼的soruce code也可以經由設定後etc/app.ini,正常顯示。
ANSI_CHARSET= big5
這裡提供官方的配置說明:
https://gogs.io/docs/advanced/configuration_cheat_sheet
關於架構
為何要把/etc/app.ini及git等資料夾使用host掛載方式,而不是弄成volume掛載.我的原因如下:
一、我沒有要分享掛載的資料到遠端主機。
二、對我來說在同一個目錄下較好進行rsync增量備份。
三、可以輕鬆的對設定檔進行修改。
像是在git/.ssh目錄新增Open Ssh公私鑰對,config等設定。
四、分享到不同的container或是調整git的post-recieive較容易。
Simple git push deployment
由於我於我採用D-Laravel container環境開發,本機與正式有著相同的環境,因此本機端確認沒問題後,直接push,並透過post-receive的hook,
立刻部署到正式環境。
/sites為放專案的資料夾,gogs與D-Laravel的container共用此資料夾。
gogs與正式環境同一台主機時
如何進行遠端佈署呢? 這裡提供我的方式。
如果您還不是很清楚ssh的公鑰驗證如何設定,請自行Google關鍵字學習。一、先產生oepn ssh的公私鑰對,放入git/.ssh目錄。
id_rsa (私鑰)
id_rsa.pub (公鑰)
config (連線設定)
二、直接用docker-compose指令,進入gogs的git使用者環境,指令如下:
docker-compose exec -u git web bash
需在gogs的目錄或子目錄執行,該指令會用遞迴的方式找尋目錄下是否有docker-compose.yml設定檔。
在這裡-u代表了,我使用container內的git使用者身份執行bash。
web則時docker-compose.yml中定義的服務名稱。
三、在gogs的container內,進入到要進行遠端部署的專案
cd ~/gogs-repositories/<組織>/<專案>.git/hooks
四、hooks在最後一行加上遠端的push,這裡的demoserver是,設定在config(連線設定)的名稱。
ssh的config內容,如下:
五、在遠端的source,就設定把source checkout到production的環境。
#!/bin/sh
GIT_WORK_TREE=/sites/ccc git checkout -f
六、所以在自己的環境push時,即可看見類似如下的資訊,完成遠端的部署。
這裡我使用zsh,因此有簡易的gss、gaa、gcmsg等alias進行commit的動作。
上圖的流程大概是這樣:
Client(自己的電腦)==>push到gogs repo===>gogs的hooks在push到遠端demoserver==>遠端demoserver的post-receive的hook將最新的修正,checkout到正式環境。
以上情境只提供參考,您可以用任何您想的到的方式佈署,例如rsync..
在這裡,我不討論安全問題,例如防火牆相關設定,或sshd_config應如何設定,像是AllowUsers git@<ip位置>
或.git目錄不應該在網頁的DocumentRoot資料夾,
假如您使用Laravel的框架,應該不會碰到這個問題,因為.git會在project的目錄下,非public。
No Comment
Post your comment