我使用 Portainer 管理我的容器。我想在新容器中安装 Discourse,但无法成功。如果有任何人能提供帮助,我将不胜感激。
我尝试了什么?
我阅读了 GitHub 文件 并尝试按照说明操作,但由于尚未创建容器,我无法运行控制台命令。因此,我在 DockerHub 上创建/克隆了一个 Discourse 镜像,并通过 Portainer 进行安装,但运行时显示以错误代码 0 退出。
我使用 Portainer 管理我的容器。我想在新容器中安装 Discourse,但无法成功。如果有任何人能提供帮助,我将不胜感激。
我尝试了什么?
我阅读了 GitHub 文件 并尝试按照说明操作,但由于尚未创建容器,我无法运行控制台命令。因此,我在 DockerHub 上创建/克隆了一个 Discourse 镜像,并通过 Portainer 进行安装,但运行时显示以错误代码 0 退出。
为什么这个安装不受支持,@rishabh?Portioner 只是一个 Docker 控制面板。
因为他们仅支持一种安装类型,即在干净的 VPS 中安装,其中所有修改和脚本都能正常运行。其他任何情况都属于自定义安装,他们不会提供支持,因为容器的使用方式有无限多种可能。
要安装 Discourse,您需要通过 launcher 工具执行引导过程。如果您能在 Portainer 中添加脚本,那么操作起来应该相对容易。或者,您也可以直接在 VPS 中安装 Discourse,然后将生成的容器推送上去,测试是否可行。
另一种可能更简单的方式是将所有组件解耦并单独部署,这意味着(绝非完整列表):
是的,我们目前只有一种官方安装方式,主要是为了让社区能够更好地提供支持。如果安装方式过多,将难以让所有人提供高质量的故障排除和设置建议。
您需要做的是使用 ./launcher 构建您的容器,然后通过 Portainer 启动它,并传入所需的所有环境变量。
有关更多讨论,请参阅 Discourse 能否提供无需引导的频繁 Docker 镜像?。
一个简单易行且可免费获得帮助的方案是遵循官方安装说明。如果您需要 Portainer 方面的帮助且有预算,可以在 Marketplace 提问或直接联系我。我虽不熟悉 Portainer,但曾构建过使用其他工具启动的容器。
不想显得无知,这个启动器实用程序在哪里?我查看了我拉取的 Docker 镜像的 /discourse 路径,但找不到任何脚本……再次,也许我看错了?我可能会运行一个标准的 Ubuntu Docker 容器并自己配置它进行测试,就像标准安装一样?
找到了类似以下的说明:
获取 Bitnami Discourse Docker 镜像的推荐方法是从 Docker Hub Registry 拉取预构建镜像。
docker pull bitnami/discourse:latest
要使用特定版本,您可以拉取版本化的标签。您可以在 Docker Hub Registry 中查看可用版本列表。
docker pull bitnami/discourse:[TAG]
如果需要,您也可以通过克隆仓库、切换到包含 Dockerfile 的目录并执行 docker build 命令来自己构建镜像。请记住将下面示例命令中的 APP、VERSION 和 OPERATING-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 镜像 来满足数据库需求。
步骤 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/ 访问您的应用程序
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 管理命令,例如从控制台创建管理员帐户,您可以通过在容器内执行 shell 并使用正确的环境变量来运行。
cd /opt/bitnami/discourse
RAILS_ENV=production bundle exec rake admin:create