​使用Docker安装Gitlab及相关配置​


最近在学习自动化部署的一些内容,自动化部署,涉及到的内容有Docker、Jenkins、Gitlab等内容,今天通过docker玩了一遍gitlab,下面是一些心得

安装Gitlab

Docker安装服务实在是太方便,我们通过docker来安装Gitlab,运行如下命令查看Gitlab的镜像文件

搜索镜像

​sudo docker search gitlab​

看到镜像有很多,如果OFFICIAL这一项下面是[OK] 表示为官方的镜像,我这里使用第四个,因为这是中文版的,鄙人英语不好,还是看中文版的比较舒服。

其实,中文版也就是安装了一个语言包而已,有兴趣可以自己安装第一个,然后再手动配置中文包

下载镜像

​sudo docker pull twang2218/gitlab-ce-zh​

启动服务

​docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh​

查看启动情况

​// 添加-a 参数,把启动的,没有启动的都列出来sudo docker ps​


配置Gitlab

配置的时候,我们需要进入容器当中配置,如果直接修改我们映射到容器外部的配置文件,总会出现一些奇怪的问题,为了避免出现问题,尽量按照如下操作流程进行相关的配置和测试

第一步:进入容器

​sudo docker exec -it gitlab bash​


第二步:修改gitlab.rb文件

​sudo cd /etc/gitlabsudo vim gitlab.rb​


第三步:修改IP和端口

该部分内容的修改是为了解决,我们再gitlab创建项目的时候,项目访问地址是容器id的问题

​// 可以使用/ 来查找关键字,找到指定的内容,然后通过n来下一个查找// 在gitlab创建项目时候http地址的host(不用添加端口)external_url 'http://xx.xx.xx.xx'// 在gitlab创建项目时候ssh地址的hostgitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'(不用添加端口)# docker run 的时候我们把22端口映射为外部的8022了,这里修改下gitlab_rails['gitlab_shell_ssh_port'] = 8022​


第四步:修改邮箱

在gitlab.rb文件的最后添加如下代码

​# 是否启用gitlab_rails['smtp_enable'] = true# SMTP服务的地址gitlab_rails['smtp_address'] = "smtp.qq.com"# 端口gitlab_rails['smtp_port'] = 465# 你的QQ邮箱(发送账号)gitlab_rails['smtp_user_name'] = "958317640@qq.com"# 授权码gitlab_rails['smtp_password'] = "********"# 域名gitlab_rails['smtp_domain'] = "smtp.qq.com"# 登录验证gitlab_rails['smtp_authentication'] = "login"# 使用了465端口,就需要配置下面三项gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = truegitlab_rails['smtp_openssl_verify_mode'] = 'none'# 你的QQ邮箱(发送账号)gitlab_rails['gitlab_email_from'] = '958317640@qq.com'​

第五步:应用配置

​sudo gitlab-ctl reconfigure​

第5.1步:修改port

修改gitlab.yml文件

​// 文件路径 /opt/gitlab/embedded/service/gitlab-rails/configsudo cd /opt/gitlab/embedded/service/gitlab-rails/configvim gitlab.yml// 修改port 为8090​


第六步:重启服务

​sudo gitlab-ctl restart​

第七步:验证邮箱服务

​// 在容器中进入命令行sudo gitlab-rails console// 测试邮件发送sudo Notify.test_email("xxx@163.com","title","gitlab").deliver_now// 退出命令行sudo exit// 退出容器sudo exit​

常用命令

启动

​// 第一次启动// 这部分命令不能直接copy,格式化只是为了方便看docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh// 如果停止了,用start启动docker start <ID || Name>​

  • -d在后台启动
  • -p 8443:443 把容器中应用的端口443映射为外部的8443端口
  • -p 8090:80 把容器中应用的端口80映射为外部的8090端口
  • -p 8443:443 把容器中应用的端口443映射为外部的8443端口
  • --restart 重启配置
  • --name 容器启动之后的名字
  • -v 把容器中的配置,日志,数据映射到容器外部

通过--name配置了gitlab的名字之后,我们后续可以通过这个name对容器进行相关的启动和停止操作

容器外停止

​sudo docker stop gitlab// 这里的gitlab 就是我们上一步docker run 当中使用--name 配置的名字​

容器外重启

​sudo docker restart gitlab​

进入容器命令行

​sudo docker exec -it gitlab bash​

容器中应用配置

​sudo gitlab-ctl reconfigure​

容器中重启服务

​sudo gitlab-ctl restart​

服务地址

以下是我的gitlab服务地址,仅供测试使用,后面可能会删除,大家不要使用哈

​http://118.31.225.185:8090​

注意事项

如果您使用的是阿里云服务器,需要在安全组里面把你想要对外开放的端口打开,否则是无法访问的

鄙人第一次捣鼓这个,里面的有些概念和配置也许说的不太对,有比较懂得朋友可以指导一二,一定感激。