Quanta RAM é necessária para hospedar Discourse junto com outros serviços?

Nos fóruns do Discourse, li que 1 GB e no máximo 2 GB de memória deveriam ser suficientes; no entanto, essas duas opções não fazem meu site funcionar suavemente. Quando executo meu arquivo docker-compose com 4 GB de memória, ele opera em cerca de 90-95%, o que é bastante. Outros componentes no arquivo docker-compose são um site estático em HTML que criei e um proxy nginx. Você poderia me informar se existe algum truque ou configuração no Discourse para fazê-lo funcionar de forma mais suave com menos RAM?

Você precisa ajustar a quantidade de workers e o buffer do banco de dados. Portanto, as opções que você precisaria ajustar seriam:

  • db_shared_buffers
  • UNICORN_WORKERS

Aqui você pode ver as estimativas de uso por Unicorn

O Discourse consegue rodar com 512 MB de RAM; não é uma experiência ideal, mas é possível. Seu problema é que o Discourse avalia os recursos do servidor (como todo o nó) e planeja o uso de recursos para aproveitar o máximo possível, pois o Discourse parte do pressuposto de que rodará sozinho.

Você pode compartilhar o arquivo docker-compose aqui para que possamos fazer sugestões adequadas?

Aqui está o arquivo docker-compose. Tive que remover alguns links de imagens, pois não posso postar mais de 2, mas isso deve ser suficiente. Onde eu deveria colocar a variável de ambiente do buffer do banco de dados?

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

Se você envolver seu código bruto com linhas que contêm apenas ```, ele ficará muito mais fácil de ler.

Como primeiro passo, recomendo que você use ./launcher para construir e iniciar sua instância do Discourse. Se preferir, pode usar ./launcher para construí-la e depois iniciá-la com docker-compose (pelo menos eu fiz algo similar para construir e iniciar imagens do Discourse com Kubernetes).

Você está usando imagens do Bitnami, que não são totalmente suportadas pelos mantenedores do Discourse e provavelmente consumirão mais RAM do que usar a Instalação Padrão Oficial do Discourse.

por que as imagens bitnami ainda são tão populares?

respondendo à minha própria pergunta, parece que bitnami é a única opção docker idiomática, onde as compilações são determinísticas e centradas em variáveis de ambiente. O Discourse usa docker por padrão, mas o trata mais como um bootstrap para sistemas de compilação tradicionais que exigem que você faça ssh e configure/mantenha pelo terminal.

Correto. Se você quiser ajuda aqui, siga a instalação padrão. Se quiser ajuda da Bitnami, você pode usar a imagem deles.

Acho que você pode querer ler isto: