直接回答:external_url 里写了端口,GitLab 容器内部就会改成监听那个端口,docker run 的端口映射必须同步改,否则映射的还是一个没人监听的端口。

安装docker之后修改external_url之后web打不开,因为这里的值我给的是http://gitlab.example.com:666 这样就相当于把容器内部端口由原来的80改为了666,需要在修改端口映射,将容器内的原来的80修改为666,然后就正常了

最简单办法

运行的时候添加环境变量

1
2
HOSTNAME  gitlab.example.com:666
GITLAB_OMNIBUS_CONFIG external_url 'http://gitlab.example.com:666'

添加邮箱支持

编辑配置文件gitlab.rb

  • 配置文件的位置一般在/etc/gitlab/gitlab.rb
  • 有2个地方需要配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '你的QQ邮箱'
gitlab_rails['gitlab_email_display_name'] = '陈洋'
gitlab_rails['gitlab_email_reply_to'] = '你的QQ邮箱'
gitlab_rails['gitlab_email_subject_suffix'] = ''

### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "你的QQ邮箱"
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'] = true
123456789101112131415161718192021

重启gitlab服务

1
2
gitlab-ctl restart
1

测试邮件发送

1
2
3
root@192:/# gitlab-rails console
irb(main):002:0> Notify.test_email('example@example.com', 'Message Subject', 'Message Body').deliver_now
12

注意点

测试邮件时报错501

1
2
3
4
5
Net::SMTPSyntaxError: 501 mail from address must be same as authorization user

原因:配置文件gitlab.rb中### Email Settings没有设置邮箱地址,意思就是发送邮件的地址和SMTP认证的账号必须一致
解决办法:配置好### Email Settings即可
1234

测试邮件时报错SSLError

1
2
3
4
5
原因:此类报错通常是SMTP服务器没有使用SSL,但是配置却开启了
解决办法:注释掉以下配置
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
1234

这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。

站内搜索

没有找到内容!