Portainer를 사용하여 Discourse 설치하기

저는 Portainer를 사용하여 컨테이너를 관리하고 있습니다. 새로운 컨테이너에 Discourse를 설치하려고 했지만, 설치하지 못했습니다. 이 문제를 해결해 주실 수 있는 분이 계시다면 감사하겠습니다.

시도해 본 내용
GitHub 문서를 읽고 따라 해보았지만, 컨테이너를 생성하지 않았기 때문에 콘솔 명령을 실행할 수 없었습니다. 그래서 DockerHub에서 Discourse 이미지를 생성/복제하여 Portainer를 통해 설치했는데, 실행하면 "exit code 0으로 종료됨"이라는 메시지가 표시됩니다.

rishabh님, 왜 이 설치 방식이 지원되지 않나요? Portainer는 그냥 Docker 제어판일 뿐인데.

그들은 하나의 설치 유형만 지원하며, 이는 모든 수정 사항과 스크립트가 문제없이 실행되는 깨끗한 VPS 환경입니다. 그 외의 모든 것은 커스텀 설치에 해당하며, 컨테이너 사용 방법은 무한하기 때문에 지원하지 않습니다.

Discourse를 설치하려면 launcher 유틸리티를 통해 부트스트래핑을 실행해야 합니다. Portainer에 스크립트를 추가할 수 있다면 비교적 쉽게 수행할 수 있습니다. 아니면 VPS에 Discourse를 설치한 후 결과물을 컨테이너로 푸시하여 작동하는지 확인해 볼 수도 있습니다.

더 쉬운 다른 방법은 모든 것을 분리하여 개별적으로 배포하는 것입니다. 이는 (완전한 목록이 아님) 다음과 같습니다:

  • PostgreSQL
  • Redis
  • Unicorns
  • Discourse

네, 커뮤니티가 이를 잘 지원할 수 있도록 공식 설치 방법을 거의 하나로만 유지하고 있습니다. 공식 설치 방법이 더 많다면, 모든 사용자가 고품질의 문제 해결 및 설정 조언을 제공하기 어려울 것입니다.

실제로 해야 할 일은 ./launcher를 사용해 컨테이너를 빌드한 후, 필요한 모든 환경 변수를 전달하여 Portainer로 컨테이너를 실행하는 것입니다.

Discourse가 부트스트래핑이 필요하지 않은 Docker 이미지를 자주 배포할 수 있는가?에서 더 많은 논의 내용을 확인해 보세요.

무료로 도움을 받을 수 있는 쉬운 해결책은 공식 설치 지침을 따르는 것입니다. Portainer에 대한 도움이 필요하고 예산이 있다면 Marketplace 채널에서 질문하거나 저에게 연락할 수 있습니다. 저는 Portainer에는 익숙하지 않지만, 다른 도구를 사용하여 컨테이너를 빌드하고 실행해 본 경험이 있습니다.

지식 부족해 보이는 것이 싫어서, 이 런처 유틸리티가 어디 있는지 궁금합니다. 가져온 Docker 이미지에서 /discourse 경로를 살펴봤는데 스크립트를 찾을 수 없었는데요… 혹시 제가 잘못 보고 있는 건가요? 아마도 표준 Ubuntu Docker 컨테이너를 실행하고, 표준 설치인 것처럼 모든 것을 직접 구성해서 테스트할 것 같습니다.

이런 설명서를 찾았습니다:

Bitnami Discourse Docker 이미지를 가져오는 권장 방법은 Docker Hub 레지스트리에서 사전 빌드된 이미지를 가져오는 것입니다.

docker pull bitnami/discourse:latest

특정 버전을 사용하려면 버전 태그를 지정하여 가져올 수 있습니다. 사용 가능한 버전 목록은 Docker Hub 레지스트리의 여기에서 확인할 수 있습니다.

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 이미지를 사용할 것입니다.

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 차트 사용을 강력히 권장합니다.

docker-compose.yaml 파일에서 문제를 발견하신 경우, 기여 가이드라인을 따라 문제를 보고하거나 수정 사항을 기여할 수 있습니다.

Discourse 문제 해결

콘솔에서 관리자 계정 만들기와 같은 Discourse 관리 명령을 실행해야 하는 경우, 컨테이너 내부에서 셸을 실행하고 적절한 환경 변수를 설정하여 실행하면 됩니다.

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