使用docker运行gitlab服务

来源:互联网 发布:netstat命令详解 linux 编辑:程序博客网 时间:2024/05/29 15:11

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

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

1 容器的运行命令

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

docker run --name='gitlab-ce' -d \       -p 10022:22 -p 80:80 \       --restart always \       --volume /data/gitlab/config:/etc/gitlab \       --volume /data/gitlab/logs:/var/log/gitlab \       --volume /data/gitlab/data:/var/opt/gitlab \       gitlab/gitlab-ce

-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'# 配置ssh协议所使用的访问地址和端口gitlab_rails['gitlab_ssh_host'] = '10.200.0.100'gitlab_rails['gitlab_shell_ssh_port'] = 10022

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

# HTTPhttp://10.200.0.100/root/test-docker-gitlab.git# SSHssh://git@10.200.0.100:10022/root/test-docker-gitlab.git

3 配置邮件发送功能

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

# 这里以新浪的邮箱为例配置smtp服务器gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.sina.com"gitlab_rails['smtp_port'] = 25gitlab_rails['smtp_user_name'] = "name4mail"gitlab_rails['smtp_password'] = "passwd4mail"gitlab_rails['smtp_domain'] = "sina.com"gitlab_rails['smtp_authentication'] = :logingitlab_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选项去掉;

0 0