디스커스 포럼에서 1GB에서 최대 2GB의 메모리가 적당하다는 글을 읽었으나, 이 두 옵션으로는 웹사이트가 매끄럽게 실행되지 않습니다. 4GB 메모리로 docker-compose 파일을 실행하면 90~95%의 사용률을 기록하며, 이는 상당히 높은 수치입니다. docker-compose 파일에는 제가 만든 정적 HTML 웹사이트와 nginx 프록시가 포함되어 있습니다. 디스커스의 설정이나 트릭을 통해 낮은 RAM 환경에서도 더 원활하게 실행되도록 하는 방법이 있는지 알려주시면 감사하겠습니다.
워커 수와 DB 버퍼를 조정해야 합니다. 따라서 조정해야 할 옵션은 다음과 같습니다:
db_shared_buffersUNICORN_WORKERS
여기서 각 Unicorn의 사용량 추정치를 확인할 수 있습니다.
Discourse는 512MB의 RAM으로도 실행할 수 있습니다. 경험은 좋지 않을 수 있지만, 불가능한 것은 아닙니다. 문제의 원인은 Discourse가 서버(즉, 전체 노드)의 리소스를 검토하여 가능한 한 많은 리소스를 활용하도록 리소스 사용 계획을 세우기 때문입니다. 이는 Discourse가 단독으로 실행된다고 가정하기 때문입니다.
적절한 제안을 드릴 수 있도록 docker-compose 파일을 여기에 공유해 주시겠어요?
다음은 docker-compose 파일입니다. 이미지 링크를 2개 이상 게시할 수 없어서 일부는 제거했지만, 이 정도면 충분할 것입니다. DB 버퍼 환경 변수는 어디에 배치해야 하나요?
version: '2'
services:
nginx:
image: ''
#image: 'itshady/nginx'
ports:
- '80:80'
depends_on:
- discourse
intellectus:
image: '
# image: 'itshady/intellectus'
ports:
- '90:80'
postgresql:
image: ''
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
#- './data/postgresql:/bitnami/postgresql'
- 'postgresql_data:/bitnami/postgresql'
redis:
image: ''
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'redis_data:/bitnami'
discourse:
image: 'docker.io/bitnami/discourse:2-debian-10' #2-debian-10
ports:
- '100:3000'
depends_on:
- postgresql
- redis
volumes:
- './data/discourse:/bitnami'
environment:
- POSTGRESQL_HOST=postgresql
- POSTGRESQL_ROOT_USER=postgres
- POSTGRESQL_CLIENT_CREATE_DATABASE_NAME=bitnami_application
- POSTGRESQL_CLIENT_CREATE_DATABASE_USERNAME=bn_discourse
- POSTGRESQL_CLIENT_CREATE_DATABASE_PASSWORD=bitnami1
- DISCOURSE_POSTGRESQL_NAME=bitnami_application
- DISCOURSE_POSTGRESQL_USERNAME=bn_discourse
- DISCOURSE_POSTGRESQL_PASSWORD=bitnami1
#- DISCOURSE_HOSTNAME=forums.intellectus.ca
- DISCOURSE_HOSTNAME=${FORUM_URL}
- DISCOURSE_EMAIL=
- SMTP_HOST=
- SMTP_PORT=
- SMTP_USER=
- SMTP_PASSWORD=
sidekiq:
image: 'docker.io/bitnami/discourse:2-debian-10'
depends_on:
- discourse
volumes:
- './data/discourse:/bitnami'
command: 'nami start --foreground discourse-sidekiq'
environment:
- DISCOURSE_POSTGRESQL_NAME=bitnami_application
- DISCOURSE_POSTGRESQL_USERNAME=bn_discourse
- DISCOURSE_POSTGRESQL_PASSWORD=bitnami1
- DISCOURSE_HOST=discourse
- DISCOURSE_PORT=3000
#- DISCOURSE_HOSTNAME=forums.intellectus.ca
- DISCOURSE_HOSTNAME=${FORUM_URL}
- SMTP_HOST=
- SMTP_PORT=
- SMTP_USER=
- SMTP_PASSWORD=
volumes:
postgresql_data:
driver: local
# external: true
redis_data:
driver: local
# external: true
discourse_data:
driver: local
# external: true
원시 코드(raw code)를 ```로만 이루어진 줄로 감싸면 훨씬 가독성이 높아집니다.
첫 단계로, ./launcher를 사용하여 Discourse 인스턴스를 빌드하고 시작하는 것을 권장합니다. 원하신다면 ./launcher로 빌드한 후 docker-compose로 시작할 수도 있습니다(적어도 저는 kubernetes로 Discourse 이미지를 빌드하고 시작할 때 비슷한 방식을 사용했습니다).
bitnami 이미지를 사용 중이며, 이는 Discourse 유지보수팀에서 완전히 지원하지 않습니다. 또한 Discourse 공식 표준 설치를 사용하는 것보다 더 많은 RAM을 사용하게 될 가능성이 높습니다.
왜 비트나미 이미지가 여전히 그렇게 인기 있는 걸까?
답을 스스로 찾아보니, 비트나미가 결정론적인 빌드와 ENV 변수를 중심으로 한 가장 관용적인 Docker 옵션인 것 같다. Discourse는 기본적으로 Docker를 사용하지만, 터미널에 SSH로 접속해서 설정하고 유지보수해야 하는 전통적인 빌드 시스템을 위한 부트스트랩처럼 취급한다.
맞습니다. 여기서 도움을 받으려면 표준 설치를 따르세요. Bitnami의 도움이 필요하시면 그들의 이미지를 사용할 수 있습니다.
아마도 이 글을 읽어보시는 것이 좋을 것 같습니다: