使用Gitlab Docker镜像发送电子邮件

7
这里是我的目标,我想为我的Gitlab服务器配置电子邮件。我遵循了许多教程,但无法使其正常工作。
我的配置如下,我有一个反向代理在Docker容器中,并且我的Gitlab服务器也在Docker容器中。
关于版本:
Docker version 17.09.0-ce, build afdb6d4
docker-compose version 1.16.1, build 6d1ac21

这是我的docker-compose.yml文件。
version: '3.3'

networks:
   proxy: 
     external: true
   internal:
     external: false

services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    environment:
        - TZ=Europe/Paris
        - GITLAB_TIMEZONE=Paris
        - IMAP_USER=USER@GMAIL.COM
        - IMAP_PASSWORD=MYGMAILPASS
        - GITLAB_INCOMING_EMAIL_ADDRESS=USERGMAIL+%{key}@gmail.com
    volumes:
        - /srv/gitlab/config:/etc/gitlab
        - /srv/gitlab/logs:/var/log/gitlab
        - /srv/gitlab/data:/var/opt/gitlab
    restart: always
    labels:
        - traefik.backend=gitlab
        - traefik.frontend.rule=Host:git.domain.com
        - traefik.docker.network=proxy
        - traefik.port=80
        - traefik.frontend.entryPoints=http,https
    networks:
        - internal
        - proxy

我遵循了一个好像不错的教程: https://github.com/sameersbn/docker-gitlab#available-configuration-parameters 但我可能在配置中漏掉了一些东西,但我无法找出问题所在...
有人能帮我配置电子邮件发送吗?我也不知道从GitLab测试电子邮件发送的正确方法。
最好的方法是通过docker-compose环境变量配置还是直接从gitlab.rb文件配置?
非常感谢您提供的任何帮助。
1个回答

13
你遵循的指南是针对与你实际使用的Docker镜像不同的镜像。你还设置了IMAP,用于接收电子邮件。在GitLab的情况下,它用于通过电子邮件回复问题。

你需要的是SMTP设置。 GitLab Docker镜像未安装sendmail,因此您将需要按照此处的说明来设置GitLab中的SMTP:https://docs.gitlab.com/omnibus/settings/smtp.html#example-configuration

你可以将gitlab.rb配置内容放入docker-compose文件的environment部分。这是我的Fastmail设置供参考:

environment:
    GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['smtp_enable'] = true 
        gitlab_rails['smtp_address'] = "***"
        gitlab_rails['smtp_port'] = 465    
        gitlab_rails['smtp_user_name'] = "***"
        gitlab_rails['smtp_password'] = "***"
        gitlab_rails['smtp_enable_starttls_auto'] = true
        gitlab_rails['smtp_tls'] = true    
        gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

谢谢您的回答。我首先直接将您的配置放入我的gitlab.rb中。我将Mailgun配置为SMTP,并尝试从“gitlab_rails console”发送电子邮件。它成功接收到了邮件,因此我认为SMTP已正确配置。是否有一种方法可以从Gitlab页面测试它?以确保一切正常。 - Hurobaki
我在GitLab上进行了事件操作,并收到了电子邮件通知。即使我从docker-compose环境变量设置gitlab.rb,一切都完美地运作!感谢您的帮助! :) - Hurobaki
@Hurobaki,你是如何通过gitlab_rails控制台发送电子邮件的?你能否在某个地方发布它,我找不到如何做到这一点。我正在尝试调试电子邮件问题,每次配置更改后都通过GUI发送电子邮件真的很麻烦。 - MMT
2
当然,我知道你的感受!我不知道你的配置,但是当你进入gitlab_rails控制台时,你必须输入以下命令:Notify.test_email('destination_email@address.com', 'Message Subject', 'Message Body').deliver_now - Hurobaki
你知道是否可以在单独的.env文件中处理smtp,并将其另外引入到相同的yaml键“GITLAB_OMNIBUS_CONFIG”下的compose中吗?我想直接在docker compose中设置大部分日志/ssl,但也想将其提交到版本控制。但是明文的外部smtp帐户密码让我感到困扰。类似于docker-compose.yml中环境键中有两个条目的内容。 - DatenBergwerker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接