by Devin Yang

建立於: 6年前 ( 更新: 6年前 )

前言

如何快速建立一個開箱即用的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

需要登入才可留言!

類似的文章


docker,container,laravel

在Nas上手動更新D-Laravel的使用者id全記錄

本文全記錄,紹我如何更新我家Nas上的fpm image的uid。 本文章中,您應該會學會查詢容器id及commit容器等相關概念。

docker

ubuntu上安裝docker-compose

簡單介紹我如何在ubuntu上安裝docker-compose. 還滿容易的。

git

用git logt指令快速列出自己或別人的commit

這裡有兩個指令,可以快速列出自己或別人所有的commit