¿Cuánta RAM se necesita para alojar discourse junto con otros servicios?

En los foros de Discourse, he leído que 1 GB y un máximo de 2 GB de memoria deberían ser suficientes; sin embargo, esas dos opciones no hacen que mi sitio web funcione sin problemas. Cuando ejecuto mi archivo docker-compose con 4 GB de memoria, funciona al 90-95 %, lo cual es considerable. Otras cosas en el archivo docker-compose son un sitio web estático HTML que construí y un proxy nginx. ¿Podrías indicarme si existe algún truco o configuración en Discourse para que funcione más suavemente con menos RAM?

Necesitas ajustar la cantidad de workers y el búfer de la base de datos. Por lo tanto, las opciones que deberías ajustar serían:

  • db_shared_buffers
  • UNICORN_WORKERS

Aquí puedes ver las estimaciones de uso por cada Unicorn:

Discourse puede ejecutarse con 512 MB de RAM; no es una buena experiencia, pero es posible. Tu problema es que Discourse revisa los recursos del servidor (como el nodo completo) y planifica el uso de los recursos para aprovechar la mayor cantidad posible, ya que Discourse asume que se ejecutará de forma aislada.

¿Puedes compartir el archivo docker-compose aquí para que podamos hacer sugerencias apropiadas?

Aquí está el archivo docker-compose. Tuve que eliminar algunos enlaces a imágenes ya que no puedo publicar más de 2, pero esto debería ser suficiente. ¿Dónde debería colocar la variable de entorno del búfer de la base de datos?

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

Si envuelves tu código sin formato con líneas que contengan solo ```, será mucho más fácil de leer.

Como primer paso, te recomiendo que uses ./launcher para compilar e iniciar tu instancia de Discourse. Si lo deseas, puedes usar ./launcher para compilarla y luego iniciarla con docker-compose (al menos yo he hecho algo similar para compilar e iniciar imágenes de Discourse con Kubernetes).

Estás utilizando imágenes de Bitnami, las cuales no tienen ningún tipo de soporte por parte de los mantenedores de Discourse y probablemente consumirán más memoria RAM que la Instalación Estándar Oficial de Discourse.

¿por qué las imágenes de bitnami siguen siendo tan populares?

respondiendo a mi propia pregunta, parece que bitnami es la única opción idiomática de docker, donde las compilaciones son deterministas y se centran en las variables de entorno. Discourse utiliza docker por defecto, pero lo trata más como un arranque para sistemas de compilación tradicionales que requieren que inicies sesión por SSH y configures/mantengas desde la terminal.

Es correcto. Si quieres ayuda aquí, sigues la instalación estándar. Si quieres ayuda de Bitnami, puedes usar su imagen.

Supongo que querrás leer esto: