Installing Discourse using Portainer

I use Portainer to manage my Containers. I wanted to install Discourse in a new container but I’m unable to do so. If anyone can help me with this would be appreciated.

WHAT I TRIED?
I read the GitHub File and tried to follow it but I was unable to run console commands as I have not created a container. So I created/cloned an image of Discourse in DockerHub and installed it through Portainer but when I run it says exited with error code 0.

Why is this unsupported install @rishabh? Portainer is just a Docker Control Panel.

Because they only support one installation type, which is in a clean VPS where all the modifications and scripts run without any issue. Anything else is a custom installation and they won’t support it as the ways to use containers is infinite.

To be able to install Discourse, you need to run the bootstrapping done via the launcher utility. If you can add scripts to Portainer it should be relatively easy to do. Or you can just install Discourse in a VPS and push the resulting container to see if that works.

Other way, which could be easier is to decouple everything and deploy them individually, this means (in no way a complete list):

  • PostgreSQL
  • Redis
  • Unicorns
  • Discourse
1 Like

Yes we have only one official install largely to allow our community to support it well. If we had more, it would be difficult for everyone to provide quality troubleshooting and setup advice.

4 Likes

What you’ll need to do is use ./launcher to build your container and then launch it with portainer, passing all of the environment variables needed.

See Can Discourse ship frequent Docker images that do not need to be bootstrapped? for more discussion.

The easy solution that you can get free help with is to follow the official install instructions. If you need help with portainer and have a budget you can ask in marketplace or contact me. I’m not familiar with portainer, but have built containers to launch with other tools.

1 Like

Dont want to look ignorant, where is this launcher utility? I was looking at the/discourse path with the docker image i pulled and could not find any scripts…again maybe i am looking at it wrong? Will prob just run a standard Ubuntu Docker container and configure it all my self for the test as if a standard install?

Found instructions such as these:

The recommended way to get the Bitnami Discourse Docker Image is to pull the prebuilt image from the Docker Hub Registry.

docker pull bitnami/discourse:latest

To use a specific version, you can pull a versioned tag. You can view the list of available versions in the Docker Hub Registry.

docker pull bitnami/discourse:[TAG]

If you wish, you can also build the image yourself by cloning the repository, changing to the directory containing the Dockerfile and executing the docker build command. Remember to replace the APP, VERSION and OPERATING-SYSTEM path placeholders in the example command below with the correct values.

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

How to use this image

Discourse requires access to a PostgreSQL database to store information. We’ll use the Bitnami Docker Image for PostgreSQL⁠ for the database requirements.

Using the Docker Command Line

Step 1: Create a network

docker network create discourse-network

Step 2: Create a volume for PostgreSQL persistence and create a PostgreSQL container

$ 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

Step 3: Create a volume for Redis persistence and create a Redis container

$ 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

Step 4: Create volumes for Discourse persistence and launch the container

$ 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

Step 5: Launch the Sidekiq container

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

Access your application at http://your-ip/

Run the application using Docker Compose
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/discourse/docker-compose.yml > docker-compose.yml
docker-compose up -d

Please be aware this file has not undergone internal testing. Consequently, we advise its use exclusively for development or testing purposes. For production-ready deployments, we highly recommend utilizing its associated Bitnami Helm chart⁠.

If you detect any issue in the docker-compose.yaml file, feel free to report it or contribute with a fix by following our Contributing Guidelines⁠.

Troubleshooting discourse

If you need to run discourse administrative commands like Create admin account from console⁠, you can do so by executing a shell inside the container and running with the proper environment variables.

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