Ich habe kürzlich auf die neueste Discourse-Version aktualisiert. Jetzt stoße ich auf das Problem, dass Discourse meldet, Port 6379 sei belegt, sodass der Container nicht erstellt werden kann:
Etwas bei der Discourse-Prüfung erkennt nicht, dass der Port frei ist.
In Docker sehe ich, dass nur der Discourse-Container gestartet wurde und alles andere fehlschlägt:
Dieses Problem hat sich wirklich zu einem Paradoxon entwickelt.
Discourse startet den redis-server-Prozess in Docker und stürzt dann ab, weil der Prozess bereits gestartet wurde:
Auf dem Host läuft eine eigene Redis-Installation, die jedoch auf Port 6800 läuft, sodass es zu keinen Konflikten kommen sollte.
Es sieht eindeutig so aus, als würde der Check an sich selbst scheitern, weil Redis sich erfolgreich startet und dann mit „Adresse bereits in Verwendung“ einen Fehler meldet:
Ja, sicher, danke, dass du dir das ansiehst . Hier ist meine app.yml:
## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MUSS du neu aufbauen
## /var/discourse/launcher rebuild app
##
## SEI *SEHR* VORSICHTIG BEIM BEARBEITEN!
## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besuche http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Entferne das Kommentarzeichen bei diesen zwei Zeilen, wenn du Lets Encrypt (https) hinzufügen möchtest
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports soll dieser Container offenlegen?
## Wenn du möchtest, dass Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
- "12080:80" # http
- "12443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Setze db_shared_buffers auf maximal 25 % des gesamten Arbeitsspeichers.
## Wird automatisch vom Bootstrap basierend auf dem erkannten RAM gesetzt, oder du kannst es überschreiben
db_shared_buffers: "4096MB"
## Kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
#db_work_mem: "40MB"
## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Arbeitsspeicher und CPU-Kernen ab.
## Wird automatisch vom Bootstrap basierend auf den erkannten CPUs gesetzt, oder du kannst es überschreiben
UNICORN_WORKERS: 8
## TODO: Der Domainname, auf den diese Discourse-Instanz antworten soll
DISCOURSE_HOSTNAME: discourse.forum
## Kommentarzeichen entfernen, wenn der Container mit demselben
## Hostnamen (-h-Option) wie oben angegeben gestartet werden soll (Standard: "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste der durch Komma getrennten E-Mail-Adressen, die bei der ersten Registrierung zu Admins und Entwicklern werden
## Beispiel: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'developer@email'
## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
DISCOURSE_SMTP_ADDRESS: mailserver
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: email@email
DISCOURSE_SMTP_PASSWORD: "****"
#DISCOURSE_SMTP_AUTHENTICATION: plain
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard: true)
## Wenn du die Lets Encrypt-Vorlage hinzugefügt hast, entferne unten das Kommentarzeichen, um ein kostenloses SSL-Zertifikat zu erhalten
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## Die CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
## siehe https://meta.discourse.org/t/14857 für Details
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/angusmcleod/discourse-question-answer.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-voting.git
- git clone https://github.com/gdpelican/retort.git
- git clone https://github.com/davidtaylorhq/discourse-whos-online.git
- git clone https://github.com/vinkas0/discourse-navigation.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
- git clone https://github.com/iunctis/discourse-formatting-toolbar.git
- git clone https://github.com/discourse/discourse-tooltips.git
- git clone https://github.com/gdpelican/babble.git
- git clone https://github.com/paviliondev/discourse-quick-messages.git
- git clone https://github.com/worldismine/PM-Scanner.git
- git clone https://github.com/paviliondev/discourse-ratings.git
- git clone https://github.com/discourse/discourse-calendar.git
- git clone https://github.com/jannolii/discourse-topic-trade-buttons.git
## Beliebige benutzerdefinierte Befehle, die nach dem Build ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn du die 'Von'-E-Mail-Adresse für deine erste Registrierung festlegen möchtest, entferne das Kommentarzeichen und ändere:
## Nach Erhalt der ersten Anmelde-E-Mail das Kommentarzeichen wieder hinzufügen. Es muss nur einmal ausgeführt werden.
##- exec: rails r "SiteSetting.notification_email='email@email"
- exec: echo "Ende der benutzerdefinierten Befehle"
Kannst du auch die vollständige rebuild-Ausgabe posten?
Ich bin mir ziemlich sicher, dass die Zeilen, die du siehst, bei jedem rebuild seit jeher auftreten und den rebuild in keiner Weise blockieren, da wir lediglich sicherstellen, dass Redis in zwei verschiedenen Hooks läuft. Dein Problem liegt woanders.
Klar. Falls du weitere Logs benötigst, kann ich sie gerne bereitstellen
Ich habe sie auf Pastebin gepostet, da sie über 3226 Zeilen lang sind und das Forumslimit für Beiträge überschreiten: Discourse Rebuild Log - Pastebin.com
Ja, die Seite wird erneut erfolgreich neu aufgebaut.
Ich habe die Ursache des Problems gefunden, warum die Seite bei mir nicht ordnungsgemäß geladen wurde.
Der Fehler lag in einem SSL-Zertifikat für Reverse Proxy, das sich nicht automatisch erneuert hat und dazu führte, dass die Seite keine Bilder laden konnte. Das ließ mich vermuten, dass der Redis-Cache nicht funktionierte
Der Build zeigt zwar eine Meldung an, aber der Redis-Server läuft einwandfrei.
Nach der Erneuerung des SSL-Zertifikats funktioniert die Seite wieder.
Vielen Dank für Ihre Unterstützung und entschuldigen Sie meine Dummheit