Docker-mailman: 全栈码头工人组合

创建于 2019-01-04  ·  7评论  ·  资料来源: maxking/docker-mailman

首先感谢出色的容器,它使我的安装变得更加容易。 我最近创建了一个完整的生产 docker-compose setup 。 我想提议/讨论我在安装过程中学到的对这个项目的一些更改/添加。

  • 提供完整的 docker-compose,包括 MTA 和 SSL Termination(基本上是 #174)

    • 将站点特定变量移动到 .env 文件(机密和域)

    • 添加带有邮递员特定配置和可配置本地子网的 postfix 容器(对 #282 有帮助)

    • 添加一个已经包含静态文件和代理到 uwsgi 套接字的 nginx 容器(不处理 ssl 终止,那里已经有足够的容器),与 #144 相关,但可能可以通过多阶段 dockerfile 解决

    • 从数据文件夹拆分配置覆盖文件夹

    • 登录到标准输出(#2,#134)

  • 从 docker-compose 中删除默认条目(主机名、容器名、链接)
  • 尝试删除硬编码的子网并使用基于 dns 的路由(不确定是否可行但会很棒)(相关 #44)

我很乐意为以上几点提供 PR,但想先得到你的反馈,在写完这张票并找到所有相关的票后,我很确定所有的变化也符合你的兴趣,所以主要将它创建为待办事项列表我。

最有用的评论

所有7条评论

感谢您对此感兴趣,我希望这能发生!

  • 我认为我们应该将全栈组合作为当前组合的一个单独选项,主要用于需要主机上的 MTA/Web 服务器来做其他事情的人,而不仅仅是为 Mailman 服务。
  • 将环境变量移动到.env文件对我来说并没有多大意义,我知道您可能希望让您的秘密更安全,但除非您使用某些 Linux 权限来拒绝对.env访问docker-compose.yaml ,这有点没用吧? 我不知道人们会如何去做。
  • 添加 postfix 容器应该会有很大帮助,它与 #282 无关,但我们可以在单独的 MR 中处理。
  • 认为最好添加一个与mailman-web共享一个卷的 Nginx 容器。 目前我对#144 不是很感兴趣,特别是因为它并没有真正让我们加快速度或其他任何事情。 在启动时生成静态文件通常应该没问题。
  • 登录到标准输出应该很棒,Django 可能很容易做到,Core可能也能做到。
  • 为什么我们要删除主机名、容器名、链接的默认条目?
  • 删除硬编码的网络内容是我真正想做的事情,根据 Hyperkitty 如何验证来自 Core 的请求,这可能会带来一些挑战,但我们也可以在上游解决这个问题。

总的来说,我喜欢大多数想法。 理想情况下,我们希望每个更改都在他们自己单独的 Pull Request 中,然后我们可以在他们各自的 PR 中更详细地讨论。

关于.env文件:

  • 它让最终用户清楚哪些变量应该改变而无需搜索抛出整个 docker-compose.yml
  • 它删除重复的定义(如 hyperkitty api 密钥)
  • 它可以/应该更容易升级 docker-compose.yml(因为一个人正在使用上游的)并且只需要在本地.env添加/修改更改的变量
  • 最终用户可以将他们正在运行的 docker-compose.yml 签入到源代码控制中,而不会泄露机密

我认为 PR 会更清楚地说明这一点,它没有太多工作,所以如果我们放弃它也没有麻烦。

链接是一项已弃用的功能,默认情况下,服务部分中的所有容器都在一个网络中,因此无论如何都是链接的。 主机名和容器名默认为服务定义中的当前部分,因此与当前明确定义的相同,我认为删除它们会使整个文件更小,因此更容易理解。

有点相关,我将这些容器集成到 Mailu (https://github.com/Mailu/Mailu) 中,它提供了堆栈的其余部分。 对这样的设置有兴趣吗?

@pgeorgi如果您已经拥有想要使用这些图像维护的集成,我很乐意在文档中添加指向您的存储库/帖子的链接。

@pgeorgi 明确地

我同意@morbidick关于.env文件的观点,主要是因为它使更新更容易。
您可以简单地执行git pull而不会污染您的回购。
另外, .env文件应该在.gitignore

示例:看看 Sentry 如何做到这一点:
https://github.com/getsentry/onpremise

他们还提供了一个env.example文件,您可以将其复制到您自己的.env文件中。

此页面是否有帮助?
0 / 5 - 0 等级