docker 镜像 discourse/discourse 是否安全且可用于生产环境?

您好,Discourse团队:

我们目前正在评估此处提供的Docker镜像:https://hub.docker.com/r/discourse/discourse

该镜像发布时间很短(撰写本文时不到24小时),我在官方文档中找不到相关信息。

我的问题是:

  • 这个Docker镜像是否由Discourse团队官方维护和支持,可用于生产环境?
  • 还是一个实验性镜像,可能会被意外移除或更改?

我们想确认在生产环境中使用此镜像是否安全。

谢谢

2 个赞

我认为 Docker 镜像为 https://hub.docker.com/r/discourse/base/。 (下载量 500 万+ 对比 800+) 见:

Docker 仓库将始终包含最新构建的版本:https://hub.docker.com/r/discourse/base/,您无需构建基础镜像。

2 个赞

感谢您的回复,我知道。但我无法轻松地使用 Docker Compose 运行 discourse/base 镜像。这个新的 discourse/discourse 镜像使设置更加简单,并且运行良好,但我想了解它的用途以及是否可以在生产环境中使用它。

1 个赞

请阅读:

1 个赞

discourse/discourse 是新的,但仍处于实验阶段,因此我不建议在生产环境中使用它。如果情况发生变化,我们一定会发布更多信息。

目前,我们唯一支持的方法是标准安装。

11 个赞

如前所述,支持的自托管方式是遵循标准安装。如果您不想这样做,那么您基本上是自生自灭。如果您想使用 docker-compose 启动,我建议使用 launcher 来构建您的映像,将其推送到您自己的存储库,然后使用 ./launcher start-cmd web_only 来获取启动它所需的 ENV 变量等。您仍然需要做一些事情来确保数据库已迁移、资产已预编译等。

您还可以设法让 github 为您构建映像,并在启动时进行迁移等(这似乎是 CDCK 未来将提供的方式)。我过去曾为客户这样做过。(如果您有预算,我很乐意提供帮助。)

如果您喜欢冒险,使用“实验性”版本可能相当安全,但前提是您需要有一个暂存站点,在将每个新部署推送到生产环境之前进行测试,并准备好等待一段时间和/或做一些需要深入了解 discourse 才能继续进行的事情。最坏的情况(可能是)是,您需要准备好进行备份并恢复到标准安装,直到实验性版本准备好投入使用。

1 个赞

您是否有关于 discourse/discourse 何时可能被认为稳定/可用于生产环境的预计发布日期或时间表?

此外,我想确认一下:discourse/discourse Docker 镜像是否开源?如果是,您能否提供 GitHub 存储库链接?

3 个赞

我现在没有任何时间表/保证。但希望在接下来的几周内能有更多信息分享。

是的,所有内容都是开源的。它由这个 GitHub Actions 工作流定期构建和发布:discourse_docker/.github/workflows/push-web-only.yml at main · discourse/discourse_docker · GitHub

7 个赞

感谢提供信息和分享GitHub链接,非常感激!

3 个赞

是的,这已经不是什么秘密了 :slight_smile:

你可以抢先体验即将推出的功能,但正如 David 所说,我们还不能正式支持它。还有大量的文档需要规划,以及各种边缘情况需要测试等等……所以,在我们把这些事情都理顺之前,我们不能推荐它用于生产环境。

8 个赞

@david / @featheredtoast,你们和团队的其他成员在这里做得非常出色。

我刚刚从 bitnami/discourse 切换到 discourse/discourse 来进行自动化测试,效果非常好。显然,我的用例非常完美——启动一个新的论坛,运行测试,然后删除。

所以,我只想表达衷心的感谢。我相信很多人也会从中受益,尤其是当它变得稳定/官方/受支持之后。

6 个赞

情况类似,我一直在寻找一种快速的方法来在 Docker Compose 设置中启动 Discourse,以便开发人员可以更轻松地构建 SSO 集成。这对他们来说似乎效果很好(如果您有兴趣,设置如下):

docker-compose.yml
volumes:
  redis_data: {}
  discourse_data: {}
  discourse_postgres: {}
  discourse_postgres_data: {}

services:
  mailpit:
    image: docker.io/axllent/mailpit:latest
    container_name: mailpit
    ports:
      - '8025:8025'

  redis:
    image: redis:7-alpine
    container_name: redis
    volumes:
      - redis_data:/data
    ports:
      - '6379:6379'
    command: redis-server --appendonly yes

  discourse_db:
    image: discourse/postgres
    container_name: discourse_db
    volumes:
      - discourse_postgres:/var/lib/postgresql
      - discourse_postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB: discourse
      - POSTGRES_USER: admin
      - POSTGRES_PASSWORD: admin_password
      - DB_USER: discourse_user
      - DB_PASSWORD: discourse_user_password

  discourse:
    image: discourse/discourse:3.5.1
    container_name: discourse
    depends_on:
      - discourse_db
      - redis
      - mailpit
    ports:
      - '80:80'
    volumes:
      - discourse_data:/shared
    environment:
      - DISCOURSE_HOSTNAME: localhost
      - DISCOURSE_DEVELOPER_EMAILS: admin@example.com
      - DISCOURSE_DB_HOST: discourse_db
      - DISCOURSE_DB_PORT: 5432
      - DISCOURSE_DB_NAME: discourse
      - DISCOURSE_DB_USERNAME: discourse_user
      - DISCOURSE_DB_PASSWORD: discourse_user_password
      - DISCOURSE_REDIS_HOST: redis
      - DISCOURSE_REDIS_PORT: 6379
      - DISCOURSE_SMTP_ADDRESS: mailpit
      - DISCOURSE_SMTP_PORT: 1025
      - DISCOURSE_SMTP_ENABLE_START_TLS: false
      - DISCOURSE_SMTP_AUTHENTICATION: none
      - LANG: en_US.UTF-8

期待听到关于未来计划或时间表的反馈,希望能运行在类似 Digital Ocean App Platform 这样的环境中(客户可以更轻松地进行管理,技术要求较低)。

3 个赞

感谢分享,@JackNZ。我甚至都没注意到 discourse/postgres 镜像 :sweat_smile: 我得去修复一下。不过,我也会分享我的进展。也许更有趣的是这里的 start.sh 脚本,虽然还需要一些清理工作,但它将创建一个管理员用户、API 密钥并禁用速率限制器。

2 个赞