GitLab 在众多 Git 服务器中算是颜值和能力都不错的。但是,有一个缺点就是安装不便。
当然,也有一键安装包,但安装过程中仍有可能出问题,而且维护升级也不简单。这次搭建新的 Git 服务器,尝试通过 docker 安装,效果非常好。
依赖环境
宿主服务器是 Centos 7。之上只安装了 Git 和 docker。docker 版本是 1.6.2 。
docker 镜像安装 GitLab
GitLab 镜像使用的是 https://github.com/sameersbn/docker-gitlab (如果需要汉化版,请先看下面的汉化安装)。安装的时候选用的最高版本 7.13.2。
另外,这个镜像里面不包含 redis 和 数据库。所以还使用了另外两个镜像:
- redis: https://github.com/sameersbn/docker-redis
- postgresql: https://github.com/sameersbn/docker-postgresql
下载镜像
下载镜像比较简单
1 | sudo docker pull sameersbn/redis:latest |
其中 gitlab 的镜像比较大,有 600+M, 其他两个在 200M 左右。下载情况就靠网络了。我在使用docker镜像的情况下都失败了一次。
安装
安装实际上比较简单。就是 docker run ……
就好了。主要是注意参数配置。
PostgreSql
1 | sudo mkdir -p /srv/docker/gitlab/postgresql |
命令中主要注意的是两点:
- chcon ··· 主要是考虑 selinux 开启的情况,这个大家看情况执行。
- docker run 命令中中的 -v 是为了将宿主服务器的目录挂载到 docker 内,为了持久化数据,下面的其他容器也一样。
Redis
1 | sudo mkdir -p /srv/docker/gitlab/redis |
这个和上面差不多,redis 没做特殊配置。
GitLab
1 | sudo mkdir -p /srv/docker/gitlab/gitlab |
上面的 GitLab 的 docker 命令参数要多一点,主要是其中配置了邮箱和 LDAP 服务器。大家可以参照官方文档自行增删配置。
因为这台运行 docker 的宿主服务器就是一台专门为 GitLab 申请的虚拟机,所以后面就没有配置独立IP。
直接在命令中通过 -p 10022:22 -p 80:80
指定了服务器的端口映射。
这里面有一点比较特殊,GitLab 的默认时间是 UTC 时间,所以通过 -e 'GITLAB_TIMEZONE=Beijing'
指定了 +8 时区。
如果你使用自带的 backup 配置的话也要注意,默认的备份时间 04:00 对应到我们这边实际上是中午 12:00 了。所以我通过 -e 'GITLAB_BACKUP_TIME=20:00'
指定了备份时间为北京时间的 04:00。当然,这个备份时间大家自己看着调了。
最后的 GitLab 容器通过 --link gitlab-postgresql:postgresql --link gitlab-redis:redisio
link 到 redis 和 postgresql ,所以其他两个容器的 IP 、端口和数据库的配置信息不用指定。镜像中已经做了处理。
当然,其他两个容器肯定要比 GitLab 先启动。
容器启动后等一会(初始化时间)就可以正常访问和配置了。
账户:root
密码:5iveL!fe
开机启动
开机启动只要把对应的 docker run
命令加入到 /etc/rc.d/rc.local
中就可以了。需要注意的是,docker
相关命令要在 docker
服务启动的情况下才能运行,所以记得把docker
服务加入开机启动。
rc.local 添加内容:
1 | docker start gitlab-redis |
汉化安装
GitLab 的汉化已经有 @larryli 同学在做,仓库地址: https://gitlab.com/larryli/gitlab 。非常感谢他的无私奉献。
当然,通过我们上面给出的 docker-gitlab 的官方镜像是安装不了汉化版的。所以我在官方镜像的基础上 fork 了一份,将安装的版本改为 @larryli 的汉化版本。
比较坑的是,由于众所周知的“网络原因”, 在国内 build 镜像会遭遇大量的失败,太打击了。所以一番折腾后又把其他我这边很难下载的东西都改到国内了,浪费了好多时间,简直心酸。修改后的仓库: https://github.com/clarkhan/docker-gitlab 。目前没有把 build 的镜像放到 docker 仓库中,大家需要可以自己 clone 下来 build 一下,应该没问题。
使用汉化的镜像,如上面介绍的一样安装就可以了。