建立于: 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与正式环境同一台主机时
如何进行远程布署呢? 这里提供我的方式。
如果您还不是很清楚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