Après la mise à niveau, docker : local_discourse/app n'est pas une adresse MAC valide

Après une mise à niveau par :

git pull
./launcher rebuild app

Le service ne démarre pas, même avec ./launcher start app.

J’obtiens une erreur liée à l’adresse MAC et il n’y a pas d’adresse MAC sur la ligne de commande :

#  ./launcher start app
x86_64 arch détecté.

+ /data/docker-discourse/docker run --shm-size=512m -d --restart=always -h myhost-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t --mac-address local_discourse/app /sbin/boot
docker: local_discourse/app n'est pas une adresse mac valide.
Voir 'docker run --help'.

Comment puis-je résoudre ce problème ?

Quel est le nom d’hôte de votre hôte ?

Le nom d’hôte est myhost.

Bizarre, ce nom d’hôte devrait définir une adresse MAC de 02:e0:04:92:ec:9a.

Quoi qu’il en soit, vous pouvez utiliser ./launcher start app --skip-mac-address pour l’ignorer si vous ne souhaitez pas déboguer davantage.

Je ne sais pas pourquoi un MAC n’est pas ajouté.

J’ai exécuté le ./launcher start app --skip-mac-address

Aucune erreur, mais il semble qu’aucun port ne soit listé, donc l’application n’est pas accessible :

CONTAINER ID   IMAGE                            COMMAND                  CREATED          STATUS          PORTS                                                                                                                                                          NAMES
7f269e451af9   local_discourse/app              \"/sbin/boot\"             28 seconds ago   Up 28 seconds                                                                                                                                                                  app

Pouvez-vous partager votre fichier app.yml (sans les données personnelles/mots de passe) ?

Bien sûr, j’ai copié ci-dessous le contenu de containers/app.yml après avoir remplacé certaines informations confidentielles par xxxxx.

## c'est le modèle de conteneur Discourse tout-en-un et autonome
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ TRÈS PRUDENT LORS DE LA MODIFICATION !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACEMENT OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## voir https://meta.discourse.org/t/17247 pour plus de détails
expose:
  - "127.0.0.1:8009:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
  ## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
  db_shared_buffers: "4096MB"

  ## peut améliorer les performances de tri, mais ajoute de la consommation mémoire par connexion
  #db_work_mem: "40MB"

  ## Quelle révision Git ce conteneur doit-il utiliser ? (défaut : tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
  ## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
  UNICORN_WORKERS: 8

  ## TODO : Le nom de domaine auquel cette instance Discourse répondra
  ## Obligatoire. Discourse ne fonctionnera pas avec un simple numéro IP.
  DISCOURSE_HOSTNAME: discourse.xxxxxxxxx.xxx

  ## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
  ## nom d'hôte (-h option) que celui spécifié ci-dessus (défaut "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO : Liste d'adresses e-mail séparées par des virgules qui deviendront administrateur et développeur
  ## lors de la première inscription exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'contact@xxxxxxxxx.xxx'

  ## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
  # L'adresse, le nom d'utilisateur et le mot de passe SMTP sont requis
  # ATTENTION le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
  DISCOURSE_SMTP_ADDRESS: mail.xxxxxxxxx.xxx
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: contact@xxxxxxxxx.xxx
  DISCOURSE_SMTP_PASSWORD: "xxxxxxxxxxxx"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (facultatif, par défaut true)

  ## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour tirer)
  ## voir https://meta.discourse.org/t/14857 pour plus de détails
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /data/hosting/data-discourse
      guest: /shared
  - volume:
      host: /data/hosting/data-discourse/log/var-log
      guest: /var/log

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Toutes les commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail 'De' pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit s'exécuter qu'une seule fois.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin des commandes personnalisées"

Pouvez-vous essayer de changer cela en :

exposer:
  - "8009:80"   # http

Exécutez-vous un proxy inverse supplémentaire sur l’hôte ? Dans ce cas, vous préférerez peut-être écouter sur une socket Unix en ajoutant un web.socketed.template.yml dans la liste des modèles en haut.

J’ai modifié l’expose et reconstruit, mais le problème persiste.

J’exécute Haproxy en tant que proxy inverse pour gérer la connexion HTTPS vers Discourse. Il fonctionne tel quel depuis plus de 2 ans avec déjà plusieurs mises à niveau.