by Devin Yang , 4 years ago

前言

如何快速建立一個開箱即用的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與正式環境同一台主機時

post-receive

如何進行遠端佈署呢? 這裡提供我的方式。

如果您還不是很清楚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。


 

Tags: docker git

Devin Yang

有什麼建議或想法,歡迎提出來哦

No Comment

Post your comment

Login is required to leave comments

Similar Stories


攻略D-Laravel設定檔

D-Laravel是一個採用Docker進行的PHP執行環境,將所有的服務放入容器中執行, 資料庫的服務(db),網頁伺服器的服務(web),PHP-FPM的服務(php)...等, 經由定義docker-compose.yml檔,我們能輕易調整資料庫的版本或PHP版本。 D-Laravel同時建立了簡易的bash,可幫我們更快速的採用docker,來建立Laravel的專案,並且完成資料庫設定。 就算您單純只是個PHP的開發著,其實也是可以透過D-Laravel,打造自己的開發環境的。 接下來,讓我們借由Docker官方文件,來理解D-Laravel做了那些設定。

linux

rsync回傳的錯誤碼

這裡列出所有的rsync錯誤碼,因此在排程中,我們可以了解失敗的原因。

iOS,Android

2020 Android vs iPhone語音助理大對決

最近我在蘋果iPhone 12開賣前,就衝了Sony的xperia 5 II,在10/07開賣的首發。 身為多年的蘋果用戶,電池門事件後,我就不是很喜歡蘋果死要錢的作風, 對於一個開發者,一直希望他能支援PWA,但是都幾年了死也不作, 猜也知道為了他們的商店營利,就是不支援...那我換Android行吧...