在服务器之前用 Docker 测试软件时,试图安装 Discourse 吗?

你好,

我正在尝试测试 discourse 软件的 docker 容器,因为有人告诉我它捆绑了 postsql,并且所有数据库都已配置好并准备就绪。来自 docker 的 bitnami:discourse:latest … 我在终端中看到这个


1. [容器](app://dd/dashboard/containers)
2. /
3. tester

### tester

[bitnami/discourse:latest](app://dd/dashboard/images/local/details?imageId=sha256%3Aad71ab26c224ab1d50f4f57ec5ddbc7a549ff331f3cf442860307358d59f79d5&nameHint=bitnami%2Fdiscourse%3Alatest&nameHintType=image-identity)

440:3000

**状态**

已退出 (1) (0 秒前)

日志检查绑定挂载执行文件统计信息

2025-05-16 15:43:26

discourse 19:43:26.78 INFO ==
>
2025-05-16 15:43:26

discourse 19:43:26.79 INFO ==
> 欢迎使用 Bitnami discourse 容器
>
2025-05-16 15:43:26

discourse 19:43:26.79 INFO ==
> 通过关注 [https://github.com/bitnami/containers⁠](https://github.com/bitnami/containers) 来订阅项目更新
>
2025-05-16 15:43:26

discourse 19:43:26.79 INFO ==
> 您知道 Bitnami 目录有企业版吗?如需增强的安全软件供应链功能、无限次从 Docker 拉取、LTS 支持或应用程序定制,请参阅 Bitnami Premium 或 Tanzu Application Catalog。有关更多信息,请参阅 [https://www.arrow.com/globalecs/na/vendors/bitnami/⁠](https://www.arrow.com/globalecs/na/vendors/bitnami/)。
>
2025-05-16 15:43:26

discourse 19:43:26.79 INFO ==
>
2025-05-16 15:43:26

discourse 19:43:26.80 INFO ==
> 正在验证 POSTGRESQL_CLIENT_* 环境变量中的设置
>
2025-05-16 15:43:26

discourse 19:43:26.85 WARN ==
> 无法解析主机名 postgresql,这可能导致连接问题
>
2025-05-16 15:43:26

discourse 19:43:26.86 WARN ==
> 无法解析主机名 redis,这可能导致连接问题
>
2025-05-16 15:43:26

discourse 19:43:26.86 WARN ==
> DISCOURSE_DATABASE_PASSWORD 环境变量为空或未设置。设置环境变量 ALLOW_EMPTY_PASSWORD=yes 以允许空密码。这仅推荐用于开发环境。
>
2025-05-16 15:43:26

discourse 19:43:26.86 WARN ==
> DISCOURSE_REDIS_PASSWORD 环境变量为空或未设置。设置环境变量 ALLOW_EMPTY_PASSWORD=yes 以允许空密码。这仅推荐用于开发环境。
>
2025-05-16 15:43:26

discourse 19:43:26.86 INFO ==
> 正在创建 Discourse 配置文件
>
2025-05-16 15:43:26

discourse 19:43:26.90 INFO ==
> 正在确保 Discourse 目录存在
>
2025-05-16 15:43:26

discourse 19:43:26.91 INFO ==
> 正在尝试连接到数据库服务器
>
2025-05-16 15:44:27

discourse 19:44:27.12 ERROR ==
> 无法连接到数据库
>

有人知道该怎么做吗?我认为数据库在第一次运行时就已经配置好了?有人有可以用来弄清楚这个的 gitbook 或指南吗?我知道它是第三方软件,应该直接安装在机器上,那么它是否可以从一个空的操作系统(如 Debian)的 docker 容器中运行?

说实话,我真的很想看看软件的后端,然后就会删除容器,所以我想找一个可以快速启动的东西。

使用 docker 的最佳方法是什么?

在我的终端中运行它,我卡在这个屏幕上,找不到任何 discourse 脚本,实际上整个文件夹在 bin 下是空的?


alex@PollockFarm Scripts % docker run -ti --rm bitnami/discourse /bin/bash

discourse 19:43:37.88 INFO ==
>
discourse 19:43:37.88 INFO ==
> **欢迎使用 Bitnami discourse 容器**
>
discourse 19:43:37.88 INFO ==
> 通过关注 **https://github.com/bitnami/containers** 来订阅项目更新
>
discourse 19:43:37.89 INFO ==
> 您知道 Bitnami 目录有企业版吗?如需增强的安全软件供应链功能、无限次从 Docker 拉取、LTS 支持或应用程序定制,请参阅 Bitnami Premium 或 Tanzu Application Catalog。有关更多信息,请参阅 https://www.arrow.com/globalecs/na/vendors/bitnami/。
>
discourse 19:43:37.89 INFO ==
>

谢谢
Alex

我们在这里不支持 Bitnami,请使用他们的论坛。

如果你希望在这里获得支持,请使用标准安装。

2 个赞

啊,真感谢你这么快的回复,@merefield,你能建议他们的论坛的直接链接或他们用来沟通这些问题的方法吗?

所以

最好的方法就是在精简的环境下运行这个吗?你可以用docker和一个基本的debian系统,然后只安装所有必需的包吗?我只是用来测试,希望可以快速移除。

1 个赞

我在帖子中提供了一个链接 :slight_smile:

1 个赞

喜欢它的工作速度!我真的很喜欢 Discourse。

再次感谢!@merefield

编辑:找到了 Docker 镜像的逐步说明:

https://hub.docker.com/r/bitnami/discourse

获取 Bitnami Discourse Docker 镜像的推荐方法是从 Docker Hub Registry 拉取预构建的镜像。

docker pull bitnami/discourse:latest

要使用特定版本,您可以拉取带版本标签的镜像。您可以在 Docker Hub Registry 中查看 可用版本列表

docker pull bitnami/discourse:[TAG]

如果您愿意,也可以通过克隆存储库、进入包含 Dockerfile 的目录并执行 docker build 命令来自己构建镜像。请记住在下面的示例命令中用正确的值替换 APPVERSIONOPERATING-SYSTEM 路径占位符。

git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM
docker build -t bitnami/APP:latest .

如何使用此镜像

Discourse 需要访问 PostgreSQL 数据库来存储信息。我们将使用 Bitnami PostgreSQL Docker 镜像⁠ 来满足数据库需求。

使用 Docker 命令行

步骤 1:创建网络

docker network create discourse-network

步骤 2:创建用于 PostgreSQL 持久化的卷并创建 PostgreSQL 容器

$ docker volume create --name postgresql_data
docker run -d --name postgresql \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env POSTGRESQL_USERNAME=bn_discourse \
  --env POSTGRESQL_PASSWORD=bitnami123 \
  --env POSTGRESQL_DATABASE=bitnami_discourse \
  --network discourse-network \
  --volume postgresql_data:/bitnami/postgresql \
  bitnami/postgresql:latest

步骤 3:创建用于 Redis 持久化的卷并创建 Redis 容器

$ docker volume create --name redis_data
docker run -d --name redis \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --network discourse-network \
  --volume redis_data:/bitnami/redis \
  bitnami/redis:latest

步骤 4:创建用于 Discourse 持久化的卷并启动容器

$ docker volume create --name discourse_data
docker run -d --name discourse \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env DISCOURSE_DATABASE_USER=bn_discourse \
  --env DISCOURSE_DATABASE_PASSWORD=bitnami123 \
  --env DISCOURSE_DATABASE_NAME=bitnami_discourse \
  --env DISCOURSE_HOST=www.example.com \
  --network discourse-network \
  --volume discourse_data:/bitnami/discourse \
  bitnami/discourse:latest

步骤 5:启动 Sidekiq 容器

docker run -d --name sidekiq \
  --network discourse-network \
  --volume discourse_data:/bitnami/discourse \
  bitnami/discourse:latest /opt/bitnami/scripts/discourse-sidekiq/run.sh

http://your-ip/ 访问您的应用程序

使用 Docker Compose 运行应用程序
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/discourse/docker-compose.yml > docker-compose.yml
docker-compose up -d

请注意,此文件未经内部测试。因此,我们建议仅将其用于开发或测试目的。对于生产就绪的部署,我们强烈建议使用其关联的 Bitnami Helm Chart⁠

如果您在 docker-compose.yaml 文件中发现任何问题,请随时报告或通过遵循我们的 贡献指南⁠ 进行修复。

Discourse 故障排除

如果您需要运行 Discourse 管理命令,例如 从控制台创建管理员帐户⁠,您可以通过在容器内执行 shell 并使用正确的环境变量来完成。

cd /opt/bitnami/discourse
RAILS_ENV=production bundle exec rake admin:create
2 个赞

你欢迎 @alex.diker,欢迎加入 Meta :)

1 个赞

推荐的方法是遵循安装说明,删除 postgres 和 redis 的模板,并在环境变量中添加数据库设置。

双容器设置(可以通过向 discourse-setup 添加一个开关来获得)是了解如何获取环境变量的简单方法。

与 Bitnami 相比,它的优点是可以在这里获得帮助,并按照标准说明安装插件。