Após atualização, docker: local_discourse/app não é um endereço mac válido

Após um upgrade por:

git pull
./launcher rebuild app

O serviço não está iniciando nem mesmo com ./launcher start app.

Estou recebendo um erro relacionado ao mac-address e não há um endereço MAC na linha de comando:

#  ./launcher start app
x86_64 arch detected.

+ /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 is not a valid mac address.
See 'docker run --help'.

Como posso corrigir isso?

1 curtida

Qual é o nome do host do seu servidor?

O nome do host é myhost.

1 curtida

Estranho, esse nome de host deveria definir um MAC de 02:e0:04:92:ec:9a.

De qualquer forma, você pode usar ./launcher start app --skip-mac-address para ignorá-lo se não quiser depurar mais.

2 curtidas

Não sei por que um MAC não é adicionado.

Executei o ./launcher start app --skip-mac-address

Nenhum erro, mas parece que nenhuma porta é listada, então a aplicação não é acessível:

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

Você pode compartilhar seu arquivo app.yml (exceto dados pessoais/senhas)?

1 curtida

Com certeza, copiei abaixo o conteúdo de containers/app.yml após substituir algumas informações confidenciais por xxxxx.

## este é o template de contêiner Discourse tudo-em-um, autônomo
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA MUITO CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
  - "127.0.0.1:8009:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Defina db_shared_buffers para um máximo de 25% da memória total.
  ## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
  db_shared_buffers: "4096MB"

  ## pode melhorar o desempenho da classificação, mas adiciona uso de memória por conexão
  #db_work_mem: "40MB"

  ## Qual revisão Git este contêiner deve usar? (padrão: tests-passed)
  #version: tests-passed

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

  ## Quantas requisições web concorrentes são suportadas? Depende da memória e dos núcleos da CPU.
  ## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
  UNICORN_WORKERS: 8

  ## TODO: O nome de domínio que esta instância do Discourse responderá
  ## Obrigatório. Discourse não funcionará com um número IP puro.
  DISCOURSE_HOSTNAME: discourse.xxxxxxxxx.xxx

  ## Descomente se você quiser que o contêiner seja iniciado com o mesmo
  ## nome de host (-h option) especificado acima (padrão "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de e-mails separados por vírgula que se tornarão administradores e desenvolvedores
  ## na inscrição inicial, exemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'contact@xxxxxxxxx.xxx'

  ## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
  # ENDEREÇO SMTP, nome de usuário e senha são necessários
  # AVISO o caractere '#' na senha SMTP pode 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, padrão true)

  ## Se você adicionou o template Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## O endereço CDN http ou https para esta instância do Discourse (configurado para puxar)
  ## veja https://meta.discourse.org/t/14857 para detalhes
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
  - volume:
      host: /data/hosting/data-discourse
      guest: /shared
  - volume:
      host: /data/hosting/data-discourse/log/var-log
      guest: /var/log

## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Quaisquer comandos personalizados para executar após a construção
run:
  - exec: echo "Início dos comandos personalizados"
  ## Se você quiser definir o endereço de e-mail 'De' para seu primeiro registro, descomente e altere:
  ## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fim dos comandos personalizados"
1 curtida

Você pode tentar mudar isso para:

expor:
  - "8009:80"   # http

Você está executando um proxy reverso extra no host? Nesse caso, você pode preferir escutar em um socket Unix adicionando um web.socketed.template.yml na lista de templates no topo.

1 curtida

Eu alterei o expose e o rebuild, mas o problema persiste.

Estou executando o Haproxy como um proxy reverso para lidar com a conexão HTTPS para o Discourse. Ele está funcionando como está há mais de 2 anos, com várias atualizações já realizadas.

1 curtida