Ich habe mir eine Reihe von Beiträgen zum Ausführen von Discourse hinter einem Traefik-Proxy angesehen, aber anscheinend fehlt mir immer noch etwas.
Vom Host aus kann ich mit curl die interne IP des Containers abrufen und sehe das Discourse-Setup-Assistenten-HTML zurückgegeben, und Traefik meldet, dass der Dienst verfügbar ist:
Wenn ich jedoch versuche, auf die Domain zuzugreifen, die über Traefik läuft, sehe ich das erwartete HTTPS-Zertifikat, erhalte aber nach mehreren Sekunden einen 504.
Hier ist meine Discourse-Konfiguration:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
expose:
#- "80:80" # http
#- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: 'redacted'
DISCOURSE_DEVELOPER_EMAILS: 'redacted'
DISCOURSE_SMTP_ADDRESS: smtp.postmarkapp.com
DISCOURSE_SMTP_USER_NAME: redacted
DISCOURSE_SMTP_PASSWORD: redacted
DISCOURSE_NOTIFICATION_EMAIL: noreply@redacted
## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
- volume:
host: /opt/discourse/shared/standalone
guest: /shared
- volume:
host: /opt/discourse/shared/standalone/log/var-log
guest: /var/log
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
docker_args:
- "-l traefik.enable=true"
- "-l traefik.http.routers.discourse.tls=true"
- "-l traefik.http.routers.discourse.rule=Host(`redacted`)"
- "-l traefik.http.routers.discourse.entrypoints=websecure"
- "-l traefik.http.routers.discourse.tls.certresolver=ledns"
- "-l traefik.http.services.discourse.loadbalancer.server.port=80"
- "-l traefik.http.services.discourse.loadbalancer.server.scheme=http"
run:
- exec: echo "Beginning of custom commands"
- exec: echo "End of custom commands"
Ich habe viele andere Dienste in derselben Traefik-Instanz, die ähnlich auf verschiedenen Hosts konfiguriert sind und alle funktionieren.
In den Discourse Nginx-Zugriffsprotokollen sehe ich die Anfrage, wenn ich die lokale IP mit curl abrufe, aber nicht, wenn ich die Domain mit curl abrufe.
Irgendwelche Vorschläge, was fehlt? Es scheint, als ob es irgendwo zwischen Traefik und Nginx verloren geht.
