Después de la actualización, docker: local_discourse/app no es una dirección MAC válida

Después de una actualización con:

git pull
./launcher rebuild app

El servicio no se inicia ni siquiera con ./launcher start app

Estoy recibiendo un error relacionado con la dirección MAC y no hay ninguna dirección MAC en la línea de comandos:

#  ./launcher start app
Se detecta la arquitectura x86_64.

+ /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 no es una dirección MAC válida.
Consulta 'docker run --help'.

¿Cómo puedo solucionarlo?

1 me gusta

¿Cuál es el nombre de host de tu host?

El nombre de host es myhost.

1 me gusta

Extraño, ese nombre de host debería establecer una MAC de 02:e0:04:92:ec:9a.

De todos modos, puedes usar ./launcher start app --skip-mac-address para omitirla si no quieres depurarla más.

2 Me gusta

No sé por qué no se agrega una MAC.

Ejecuté el comando ./launcher start app --skip-mac-address

No hubo error, pero parece que no se lista ningún puerto, por lo que la aplicación no es accesible:

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

¿Puedes compartir tu archivo app.yml (menos datos personales/contraseñas)?

1 me gusta

Claro, he copiado a continuación el contenido de containers/app.yml después de reemplazar información confidencial por xxxxx.

## esta es la plantilla de contenedor Docker de Discourse todo en uno y autónoma
##
## Después de realizar cambios en este archivo, DEBE reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TENGA MUCHO CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES EN ESPACIOS EN BLANCO O ALINEACIÓN!
## visite http://www.yamllint.com/ para validar este archivo según sea necesario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas dos líneas si desea agregar Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si desea que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulte https://meta.discourse.org/t/17247 para obtener detalles
expose:
  - "127.0.0.1:8009:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Establezca db_shared_buffers en un máximo del 25% de la memoria total.
  ## será establecido automáticamente por bootstrap según la RAM detectada, o puede anularlo
  db_shared_buffers: "4096MB"

  ## puede mejorar el rendimiento de la clasificación, pero aumenta el uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (predeterminado: tests-passed)
  #version: tests-passed

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

  ## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
  ## será establecido automáticamente por bootstrap según las CPU detectadas, o puede anularlo
  UNICORN_WORKERS: 8

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  ## Requerido. Discourse no funcionará con un número IP simple.
  DISCOURSE_HOSTNAME: discourse.xxxxxxxxx.xxx

  ## Descomente si desea que el contenedor se inicie con el mismo
  ## nombre de host (-h option) que se especifica arriba (predeterminado "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que se convertirán en administradores y desarrolladores
  ## en el registro inicial, ejemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'contact@xxxxxxxxx.xxx'

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  # La DIRECCIÓN SMTP, el nombre de usuario y la contraseña son obligatorios
  # ADVERTENCIA: el carácter '#' en la contraseña SMTP puede causar problemas.
  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           # (opcional, predeterminado true)

  ## Si agregó la plantilla Lets Encrypt, descomente a continuación para obtener un certificado SSL gratuito
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## La dirección CDN http o https para esta instancia de Discourse (configurada para tirar)
  ## consulte https://meta.discourse.org/t/14857 para obtener detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volumes:
  - volume:
      host: /data/hosting/data-discourse
      guest: /shared
  - volume:
      host: /data/hosting/data-discourse/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulte https://meta.discourse.org/t/19157 para obtener detalles
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Cualquier comando personalizado para ejecutar después de la compilación
run:
  - exec: echo "Comienzo de comandos personalizados"
  ## Si desea establecer la dirección de correo electrónico 'De' para su primer registro, descomente y cambie:
  ## Después de recibir el primer correo electrónico de registro, vuelva a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin de comandos personalizados"
1 me gusta

¿Puedes intentar cambiarlo a:

expose:
  - "8009:80"   # http

¿Estás ejecutando un proxy inverso adicional en el host? En ese caso, es posible que prefieras escuchar en un socket Unix agregando un web.socketed.template.yml en la lista de plantillas en la parte superior.

1 me gusta

He cambiado la exposición y la reconstrucción, pero sigue siendo el mismo problema.

Estoy ejecutando Haproxy como un proxy inverso para manejar la conexión HTTPS a Discourse. Ha estado funcionando tal cual durante más de 2 años con varias actualizaciones.

1 me gusta