אני מנסה לפרוס את Discourse כשירות docker swarm.
השתמשתי בשיטת ההפעלה הרשמית כדי לפרוס את Discourse בהתקנה של מיכל יחיד.
העתקתי את הקבצים הנדרשים מ-/var/www/discourse בתוך המיכל העצמאי למיקום בשרתי המארח כדי להשתמש בו בשירות Swarm.
השתמשתי בשרת postgre קיים
יצרתי מיכל Redis ייעודי עבור Discourse
Discourse לא מצליח להתחיל ויוצא עם:
uninitialized constant Discourse::SiteSetting (NameError)
המיכל מתחבר ל-PostgreSQL ול-Redis ללא בעיות.
DISCOURSE_HOSTNAME מוגדר כהלכה ל-discourse.xyz בסביבה.
האם זה יכול להיות עקב תלות חסרה או קומפילציית נכסים שבורה?
האם Discourse דורש שינויים כלשהם כדי לתפקד כראוי בסביבת Swarm?
version: '3.7'
services:
app:
image: discourse-app:latest
user: "1000:1000"
working_dir: /var/www/discourse
deploy:
replicas: 1
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.backend=discourse"
- "traefik.docker.network=service"
- "traefik.frontend.rule=Host:discourse.xyz"
- "traefik.port=80"
command:
- "/bin/bash"
- "-c"
- |
bundle config set deployment true bundle config set without 'test development' RAILS_ENV=production bundle install RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rails server -b 0.0.0.0
environment:
DISCOURSE_DB_HOST: "postgrest1"
DISCOURSE_DB_PORT: "5432"
DISCOURSE_DB_USERNAME: "postgres"
DISCOURSE_DB_PASSWORD: "****"
DISCOURSE_DB_NAME: "discourse"
DISCOURSE_REDIS_HOST: "redis-discourse"
DISCOURSE_REDIS_PORT: "6379"
DISCOURSE_REDIS_PASSWORD: "****"
DISCOURSE_HOSTNAME: "discourse.xyz"
DISCOURSE_DEVELOPER_EMAILS: "abc@xyz.com"
DISCOURSE_SMTP_ADDRESS: "xyz"
DISCOURSE_SMTP_PORT: "25"
DISCOURSE_NOTIFICATION_EMAIL: "donotreply@xyz.com"
networks:
- service
ports:
- "8080:80"
- "8443:443"
volumes:
- type: bind
source: /discourse/discourse_files/discourse
target: /var/www/discourse
bind:
propagation: rprivate
- type: bind
source: /discourse/shared/standalone
target: /shared
bind:
propagation: rprivate
- type: bind
source: /discourse/shared/standalone/log/rails
target: /data/modulusdata/infra/discourse/shared/standalone/log/rails
bind:
propagation: rprivate
- type: bind
source: /discourse/shared/standalone/log/var-log
target: /var/log
bind:
propagation: rprivate
networks:
service:
external: true