by Devin Yang

建立于: 5年前 ( 更新: 5年前 )

前言

我朋友想研究gitlab的操作,我说用docker image不用十分钟就装起来了,
我家的Synology Nas上也有gitlab包可以直接安装。

结果,不是安装失败,就是修复中,或是已启动了不能用。@@
还被朋友呛...


即然Synalogy Nas上的gitlab老是安装失败,山不转路转,
我就用官方的Docker image来跑私有仓库吧

官方文档连结:
https://docs.gitlab.com/omnibus/docker/
 

步骤

一、透过ssh连线进入我的Synlogy Nas。
(前题,您的Synology NAS需设置可以SSH登录,这里我采公钥验证,并且透过ssh-agent日志密码了,因此没打密码。)

(题外话,我能用cc登录,是在~/.ssh/config中有类似的设置 ,192.168.100.1是我的Nas的IP位置)
下图中,Include方式有些旧版的Linux并不支持哦,贴出来供大家参考!


二、创建挂载所需的数据夹。
mkdir -p /volume1/docker/gitlab/config
mkdir -p /volume1/docker/gitlab/logs
mkdir -p /volume1/docker/gitlab/data

三、运行docker run命令,创建并运行容器。
(前题,您的Synology NAS需支持Docker安装与运行,您安装好了)
docker run --detach \
--hostname git.ccc.tc \
--publish 127.0.0.1:3080:80 --publish 3022:22 \
--name gitlab \
--restart always \
--volume /volume1/docker/gitlab/config:/etc/gitlab \
--volume /volume1/docker/gitlab/logs:/var/log/gitlab \
--volume /volume1/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest


在上方的例子中,我将web的port开在host的port 3080,并且使用本地的IP位置。

因为Synology有反向代理,可以走HTTPS,因此我不需要将没加密的HTTP公布到外面。
我们从Synalogy Nas上的「控制台」=>「应用进程入口」可以进行此设置。
我的规则如下:


如果您的Synalogy Nas也有设置防火墙,记得开启port 3443。
其实是可以弄另一个子域名,例如: gitlab.ccc.tc,就不需要额外的port 3443了。
不过只是随便测试,就不这么讲究啦。

启动与关闭

因为是单纯使用docker进行contianer的创建与运行。下次除非我们删了container,不然激活及停止只需透过。
docker start gitlab

或是
docker stop gitlab

关於设置

gitlab的设置就会存放在挂载的数据夹,gitlab.rb档


在上方的docker命令中,我们使用的是标准的port 3080:80,会看到HTTP的连结是HTTP,非下方的HTTPS连结。


在Synology的Nas上,是使用HTTPS为入口的,而Container内是用HTTP,为了让GitLab显示正确的HTTPS协议,
在gitlab.rb档内,我进行设置如下:
external_url 'https://git.ccc.tc:3443'

但是,如果单纯上方的设置,会造成nginx启动失败,推测是没设置证书造成,没去深究了。
再补上下方设置即可覆写gitlab的container启动时,nginx依然采用port 80非上方的external_url。
##! **Override only if you use a reverse proxy**
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port
# nginx['listen_port'] = nil
nginx['listen_port'] = 80
##! **Override only if your reverse proxy internally communicates over HTTP**
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#supporting-proxied-ssl
nginx['listen_https'] = false


完成设置后,进入gitlab的container内
docker exec -ti gitlab bash


再进行设置档重载重作: (下方命令,是在gitlab的容器内运行的)
gitlab-ctl reconfigure

补充

我们知道git有多种的传输协议,除了http外也有ssh。在docker run时,已指定了port开在3022了。
因此,当我们要采用SSH进行clone并且在非标准的连接埠时,最简单做法就是新建~/.ssh/config
Host cclab
Hostname git.ccc.tc
User git
Port 3022
这样,就可以经由ssh加上自定义的host名称进行clone罗。
git clone cclab:devin/testing.git

这是我朋友邀求创建的测试帐号(ironma/thor),私有仓库完成罗。
除了他自己外,另外两个使用者,我问说,谁要当管理者,他说他。


我说,好歹索尔也是个神,所以....私有仓库搞定罗。
下方即是创建的测试帐号..:D


Docker真是方便好用。D-Laravel也是....:p

Tags: git Synology

Devin Yang

文章内容无法一一说明,如果您有什么不了解处,欢印提问哦:)

No Comment

Post your comment

需要登入才可留言!

类似文章


git

透过Git属性,在diff时,同时正常显示big5及gb2312等不同编码

不同中文编码时的乱码问题,这里举例,例如同时有三个不同编码的php档,会显示成怎样。 我们直接透过 git log -p 来看一下结果,会发觉到有看不懂的乱码....

synology,日誌中心,rsyslog,syslog

用Synology日志中心集中查看主机的Log

本文介绍,我用我如何用Synology日志中心日志我家主机的所有日志。在Synolog的日志中心,我们可以透过他的UI进行搜寻功能。这样我们能集中查看我们的Log,像是Linux主机的调度运行状况。还能透过命令发送讯录到日志中心,我们随时能反查Linux主机每日的日常备份任务,备份成功或失败等。

git

强制清空远程repo所有数据

强制清空远程repo所有数据