docker部署gitlab
快速命令
1 拉取镜像
docker pull gitlab/gitlab-ce
2 启动容器
docker run -itd \
-p 9980:80 \
-p 9922:22 \
-v /opt/soft/docker/gitlab/etc:/etc/gitlab \
-v /opt/soft/docker/gitlab/log:/var/log/gitlab \
-v /opt/soft/docker/gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce
/opt/soft/docker/gitlab/opt 是宿主机 也就是外面的机器。
这个会自动创建
-i 以交互模式运行容器,通常与 -t 同时使用命令解释
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 9980:80将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /opt/soft/docker/gitlab/etc:/etc/gitlab将容器/etc/gitlab目录挂载到宿主机/opt/soft/docker/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
--restart always容器自启动
--privileged=true让容器获取宿主机root权限
--name gitlab设置容器名称为gitlab
gitlab/gitlab-ce镜像的名称,这里也可以写镜像ID
3 修改配置文件并配置邮箱
注意:这里是把4.3放到4.2后面配置,然后再操作4.4。原因是希望在4.4中统一修改端口,如果4.3和4.2分开配置,会容易遗漏修改4.4中的端口,从而在clone项目时,导致链接中没有端口的bug。
4、配置环境
4.1 开放linux端口
先开放gitlab使用的linux端口。
1.开放服务器端口
firewall-cmd --zone=public --add-port=9980/tcp --permanent
firewall-cmd --zone=public --add-port=9922/tcp --permanent
云服务器 需要放开9980 9922
2. 重启防火墙
firewall-cmd --reload
3.查询有哪些端口是开启的
firewall-cmd --list-port
4.2 设置IP、端口
以下操作均在容器中执行
进入容器
docker exec -it gitlab /bin/bash
修改配置文件
vi /etc/gitlab/gitlab.rb
在开头加入以下内容:
公网ip: 你的ip
111.231.74.191
**注意:**external_url 的地址后面不能加端口,否则即使部署成功也无法访问。
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://111.231.74.191'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '111.231.74.191'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
#时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
#开启备份功能
gitlab_rails['manage_backup_path'] = true
#备份文件的权限
gitlab_rails['backup_archive_permissions'] = 0644
#保存备份 60 天
gitlab_rails['backup_keep_time'] = 5184000
4.3 配置邮箱
邮箱是企业进行工作中的通知,交互必不可少的部分,gitlab同样支持邮箱的配置,方便对一些操作有邮件的提醒。
开启smtp功能
注意事项:一定要搞清楚邮件服务的端口到底是哪个,不然配置完后测试邮件发送会提示链接超时,也可以在docker部署的gitlab容器内
telnet IP 端口 来判断邮箱的地址和端口是否正确,如果正确则不报错,后面也会给出具体的配置。
QQ邮箱SMTP 服务器地址及端口:
163邮箱SMTP 服务器地址及端口
进入gitlab容器内部修改配置
docker exec -it gitlab /bin/bash
建议先在器内 telnet IP 端口 来确定邮件的SMTP服务能否链接上。
修改配置文件
vi /etc/gitlab/gitlab.rb
QQ邮箱:【注意端口】推荐,因为163邮箱可能会出现telnet端口不通的问题。
经测试,QQ的英文邮箱和数字邮箱可以共用同一个授权码。
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = '发件邮箱'
gitlab_rails['smtp_password'] = '第三方登录授权码'
gitlab_rails['smtp_domain'] = 'smtp.qq.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = '发件邮箱'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '发件邮箱'
# gitlab_rails['gitlab_email_display_name'] = 'Example'
163邮箱:【注意端口】
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.163.com'
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = '发件邮箱'
gitlab_rails['smtp_password'] = '第三方登录授权码'
gitlab_rails['smtp_domain'] = 'smtp.163.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = '发件邮箱'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '发件邮箱'
# gitlab_rails['gitlab_email_display_name'] = 'Example'
以上两个厂商的邮箱配置已验证,可用。
5、gitlab.rc统一配置
673170360@qq.com
‘gitlab的密码’
输入命令:telnet smtp.qq.com 587
220 newxmesmtplogicsvrszb9-0.qq.com XMail Esmtp QQ Mail Server.
111.231.74.191 是我的公网ip 要换成你的
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://111.231.74.191'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '111.231.74.191'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
#时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
#开启备份功能
gitlab_rails['manage_backup_path'] = true
#备份文件的权限
gitlab_rails['backup_archive_permissions'] = 0644
#保存备份 60 天
gitlab_rails['backup_keep_time'] = 5184000
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = '你的邮箱(需要修改)'
gitlab_rails['smtp_password'] = '你的邮箱授权(需要修改)'
gitlab_rails['smtp_domain'] = 'smtp.qq.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = 你的邮箱(需要修改)'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '你的邮箱(需要修改)'
# gitlab_rails['gitlab_email_display_name'] = '君临'
5.1 让配置生效
在4.2、4.3都配置完毕后再执行4.4的步骤。
让配置生效
gitlab-ctl reconfigure
输入命令后,会执行一系列操作,直到最后出现:gitlab Reconfigured!
修改gitlab.yaml 文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
默认为80端口,修改端口号为之前配置的端口
重启gitlab服务
gitlab-ctl restart
测试执行gitlab-rails console进入控制台交互界面,然后在控制台提示符后输入下面内容发送一封测试邮件,测试完成后exit()退出。
gitlab-rails console
# 示例
Notify.test_email('你的邮箱地址', 'GitLab email', 'Hello world').deliver_now
退出容器
exit;
6、管理员登录Gitlab
查找管理员(root)的密码,进入容器
docker exec -it gitlab /bin/bash
查看初始密码
cat /etc/gitlab/initial_root_password
你的密码*
登录
111.231.74.191:9980
root
***你的密码****
账号:root
密码:【上一步查看的密码】
修改超级管理员的密码
7、关闭用户自动注册功能
tips:自己记录一下。不用管
http://111.231.74.191:9980/projects/new#blank_project
111.231.74.191
参考
http://t.csdnimg.cn/9YTZz