J’essaie de déployer Discourse en tant que service docker swarm.
J’ai utilisé la méthode officielle du lanceur pour déployer Discourse dans une configuration à conteneur unique.
J’ai copié les fichiers requis de /var/www/discourse à l’intérieur du conteneur autonome vers un emplacement sur les serveurs hôtes pour les utiliser dans le service Swarm.
J’ai utilisé un serveur PostgreSQL existant
J’ai créé un conteneur Redis dédié pour Discourse
Discourse ne démarre pas et se termine avec : uninitialized constant Discourse::SiteSetting (NameError)
Le conteneur se connecte à PostgreSQL et Redis sans problème.
DISCOURSE_HOSTNAME est correctement défini sur discourse.xyz dans l’environnement.
Cela pourrait-il être dû à des dépendances manquantes ou à une compilation d’assets défectueuse ?
Discourse nécessite-t-il des modifications pour fonctionner correctement dans un environnement 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