使用 Gitlab docker 映像发送电子邮件

Posted

技术标签:

【中文标题】使用 Gitlab docker 映像发送电子邮件【英文标题】:Send email with Gitlab docker image 【发布时间】:2018-05-09 03:44:09 【问题描述】:

这是我的目标,我想为我的 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】:

您遵循的说明适用于与您实际使用的不同的 docker 镜像。您还设置了用于接收电子邮件的 IMAP。在 GitLab 的案例中,它用于通过电子邮件回复问题。

您需要的是 SMTP 设置。 GitLab docker 映像未安装 sendmail,因此您必须按照此处的说明在 GitLab 中设置 SMTP:https://docs.gitlab.com/omnibus/settings/smtp.html#example-configuration

您可以直接在 docker-compose 的 environment 部分下转储 gitlab.rb 配置。我的 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 控制台”发送电子邮件。它收到了邮件,所以我认为 SMTP 配置正确。有没有办法从 Gitlab 页面测试它?确保一切正常 所以我在 GitLab 上做了一些活动,并收到了电子邮件通知。即使我从 docker-compose 环境变量中设置了 gitlab.rb ,一切正常!感谢您的帮助 ! :) @Hurobaki 您是如何设法通过 gitlab_rails 控制台发送该电子邮件的?你能在某个地方发帖吗,我在任何地方都找不到如何做到这一点。我正在尝试调试电子邮件问题,每次配置更改后尝试通过 GUI 发送电子邮件真的很麻烦。 @MMT 当然,我知道你的感受!我不知道您的配置,但是当您进入 gitlab_rails 控制台时,您必须输入以下命令:Notify.test_email('destination_email@address.com', 'Message Subject', 'Message Body').deliver_now 你知道是否可以在一个单独的 .env 文件中处理 smtp 并在相同的 yaml 键“GITLAB_OMNIBUS_CONFIG”下将其额外引入到 compose 中?我希望直接在 docker compose 中设置大部分日志记录/ssl,但也希望将其提交给版本控制。但是明文外部 smtp 帐户密码让我感到困惑。类似于 docker-compose.yml 的东西,在环境键中有两个条目。

以上是关于使用 Gitlab docker 映像发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

ECR 映像移动到 ECS(Docker、Gitlab)

Lombok 作为 Gitlab CI 中 mevan docker 映像的提供者?

CI系统中的Docker标记策略(GitLab)

为 Gitlab CI Dockerizing Nodejs 依赖项

在 GitLab-ci Docker build 中执行外部 bash 脚本

如何使用气流 DockerOperator 提取我自己的私有存储库的 docker 映像?