لقد قرأت العديد من المشاركات حول تشغيل Discourse خلف وكيل Traefik، ولكن للأسف يبدو أنني ما زلت أفتقد شيئًا ما.
من المضيف إذا قمت بتجربة curl للعنوان IP الداخلي للحاوية، يمكنني رؤية معالج إعداد Discourse HTML الذي تم إرجاعه، ويبلغ Traefik عن توفر الخدمة:
ومع ذلك، عندما أحاول الاتصال بالنطاق الذي يمر عبر Traefik، يمكنني رؤية شهادة https المتوقعة ولكن بعد ذلك أحصل على 504 بعد عدة ثوانٍ.
إليك تكوين Discourse الخاص بي:
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
## حاوية Docker عديمة الحالة؛ يتم تخزين جميع البيانات في /shared
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"
لدي العديد من الخدمات الأخرى في نفس مثيل Traefik المُعدة بشكل مشابه على مضيفين مختلفين وهي تعمل جميعها.
في سجلات وصول Discourse nginx، يمكنني رؤية الطلب عند استخدام curl للعنوان IP المحلي، ولكن ليس عند استخدام curl للنطاق.
أي اقتراحات حول ما هو مفقود؟ يبدو أنه يضيع في مكان ما بين Traefik و nginx.
