Auf Discourse-Foren habe ich gelesen, dass 1 GB und maximal 2 GB Arbeitsspeicher ausreichen sollten. Allerdings laufen meine Website mit diesen beiden Optionen nicht reibungslos. Wenn ich meine docker-compose-Datei mit 4 GB Arbeitsspeicher ausführe, funktioniert sie zu etwa 90–95 %, was bereits sehr viel ist. Weitere Komponenten in der docker-compose-Datei sind eine von mir erstellte statische HTML-Website und ein Nginx-Proxy. Können Sie mir bitte mitteilen, ob es einen Trick oder bestimmte Einstellungen in Discourse gibt, damit es mit weniger RAM reibungsloser läuft?
Sie müssen die Anzahl der Worker und den DB-Puffer anpassen. Die Optionen, die Sie anpassen müssten, sind:
db_shared_buffersUNICORN_WORKERS
Hier können Sie die Schätzungen für die Nutzung pro Unicorn sehen:
Discourse kann mit 512 MB RAM ausgeführt werden – das ist zwar kein gutes Erlebnis, aber möglich. Ihr Problem besteht darin, dass Discourse die Ressourcen des Servers (als gesamter Node) überprüft und die Ressourcennutzung plant, um so viele Ressourcen wie möglich auszunutzen, da Discourse davon ausgeht, dass es allein läuft.
Können Sie die docker-compose-Datei hier teilen, damit wir entsprechende Vorschläge machen können?
Hier ist die docker-compose-Datei. Ich musste einige Bild-Links entfernen, da ich nicht mehr als zwei posten kann, aber das sollte ausreichen. Wo würde ich die Umgebungsvariable DB Buffer platzieren?
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
Wenn Sie Ihren Rohcode mit Zeilen umschließen, die nur ``` enthalten, ist er viel leichter zu lesen.
Als ersten Schritt empfehle ich, ./launcher zum Erstellen und Starten Ihrer Discourse-Instanz zu verwenden. Wenn Sie möchten, können Sie ./launcher zum Erstellen verwenden und es dann mit docker-compose starten (zumindest habe ich Ähnliches getan, um Discourse-Images mit Kubernetes zu erstellen und zu starten).
Sie verwenden Bitnami-Images, die von den Discourse-Maintainern überhaupt nicht unterstützt werden und wahrscheinlich mehr RAM verbrauchen als die offizielle Standardinstallation von Discourse.
Warum sind Bitnami-Images immer noch so beliebt?
Ich beantworte meine eigene Frage: Es scheint, dass Bitnami die einzige idiomatische Docker-Option ist, bei der die Builds deterministisch und auf Umgebungsvariablen zentriert sind. Discourse verwendet standardmäßig Docker, behandelt es aber eher wie Bootstraps für traditionelle Build-Systeme, die erfordern, dass Sie sich per SSH anmelden und die Einrichtung/Wartung über das Terminal durchführen.
Das ist richtig. Wenn Sie hier Hilfe wünschen, folgen Sie der Standardinstallation. Wenn Sie Hilfe von Bitnami wünschen, können Sie deren Image verwenden.
Ich schätze, Sie möchten das hier lesen: