docker-gitlab配置

之前,在服务器上直接安装配置过gitlab,感觉需要配置安装的东西还是挺多的:git,redis,postgresql,nginx等。这么多服务一起,备份和迁移都不方便。为了避免这个问题,决定将gitlab进行docker化部署。所有服务组件都在一个docker容器里面,只需将重要的配置、repo数据等挂载在宿主机上保存。平时只要备份挂载的数据目录即可,另外,如果需要迁移,也只需把数据目录拷贝到其它服务器,通过docker容器运行即可。

我使用的gitlab镜像是从docker公共仓库上下载的gitlab/gitlab-ce,里面包含了需要的所有组件服务,只要这一个镜像即可(当时GitLab的版本是8.7.5)。

1 容器的运行命令

容器的运行其实很简单,但刚开始也折腾了许久才让它按照自己想要的方式跑起来。

sudo docker run --name='gitlab-ce' -d \
    --hostname 192.168.4.202 \
    -p 443:443 -p 2222:22 -p 8080:80 \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

-p 用来指定docker容器映射宿主机的服务端口。80是web访问用的端口,22是ssh协议用的端口;
–volume 用来指定挂载目录。将config配置目录、data数据目录、logs日志目录挂载到宿主机上,以后备份起来也方便。

2 配置gitlab服务器的访问地址

按照上面的方式,让gitlab容器运行起来是没有问题的,但是当在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,即容器的id。作为gitlab服务器,当然是需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机上的路径为:/data/gitlab/config/gitlab.rb)配置文件里面的参数。

# 配置http协议所使用的访问地址
external_url 'http://10.200.0.100:8080'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '10.200.0.100'
gitlab_rails['gitlab_shell_ssh_port'] = 2222

此时项目的仓库地址就变了。如果ssh端口地址不是默认的22,就会加上ssh:// 协议头

# 22端口
git@<external_url>:<组名>/<项目名>.git
# 非22端口
ssh://git@<external_url>:port/<组名>/<项目名>.git

为了方便,这里直接用宿主机ip来指定。ssh默认使用的端口号是22,但是为了避开与宿主机22端口的冲突,这里用了10022。通过上面的配置,gitlab上的项目生成的访问地址如下:

# HTTP
http://10.200.0.100:8080/root/test-docker-gitlab.git
# SSH
ssh://git@10.200.0.100:2222/root/test-docker-gitlab.git

修改 http或https 端口

// http
external_url "http://10.200.0.100:1226" //启动时使用1226端口
// https
external_url "https://10.200.0.100:1227" //启动时使用1227端口

重启配置生效。

$ sudo gitlab-ctl reconfigure
或
docker restart <ID>

这里有个坑。按上面设置external_url之后,居然访问不了,百思不得其解啊,都是按官网设置的。后来才发现一条,关于nginx的设置。原来默认下,nginx监听的端口为external_url中定义的,或者默认的80/443。所以刚nginx是监听的1226端口。而docker run的时候是暴露的80端口,所以根本就访问不了。
修改nginx的监听端口,一切ok。

# nginx['listen_port'] = nil
nginx['listen_port'] = 80

至此,就可以顺利的通过项目下的仓库地址来pull代码了。

3 配置邮件发送功能

个人觉得gitlab服务器发送邮件的功能是必不可少的,尤其是在用户注册时,通知用户设置密码也是通过发送邮件来完成的。这里也是修改gitlab.rb配置文件来完成。

# 这里以新浪的邮箱为例配置smtp服务器
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.sina.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "name4mail"
gitlab_rails['smtp_password'] = "passwd4mail"
gitlab_rails['smtp_domain'] = "sina.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true

# 还有个需要注意的地方是指定发送邮件所用的邮箱,这个要和上面配置的邮箱一致
gitlab_rails['gitlab_email_from'] = 'name4mail@sina.com'

注意,每次修改gitlab.rb配置文件之后,或者在容器里执行gitlab-ctl reconfigure命令,或者重启容器以让新配置生效。

其他

1) 如果想要支持https的话,还需要配置一下nginx;
2) 如果不想在登录界面出现用户自注册的输入界面的话,可以在Admin Area->Settings->Sign-in Restrictions里将Sign-up enabled选项去掉;
3) 国内的网络大家都懂的,gitlab使用的Gravatar头像时常显示不出来,如果不想用这功能,可以在Admin Area->Settings->Account and Limit Settings里将Gravatar enabled选项去掉;

部分来自:http://blog.csdn.net/felix_yujing/article/details/52139070,个人补充不完整内容

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值