Executando verificação de segurança...
1

Rabbit MQ - Esperando pelo setup

o RabbitMQ me pregou uma peça e queria ver se fiz algo errado ou rola com todo mundo.
Minha aplicação esta rodando com compose, onde tenho o App1 (exemplo), o nginx e o RabbitMQ. Coloquei o Depends on para subir na ordem Rabbit, App e nginx achando que estaria tudo certo, mas achei errado.
Quando o container subia a conexão com o maldito coelho falhava.
usando docker exec -it App1 eu verificava que estava tudo certo e a aplicação até subia se eu rodasse.
Conclusão: Eu precisava colocar algo no meu codigo que esperasse o Rabbit estar apto a receber conexões, pois o Depends on só verifica se o container ta no ar aparentemente.

Carregando publicação patrocinada...
4

Olá Txug0

É possivel criar algumas condições mais avançadas para ordem de inicialização utilizando healthcheck

Referencia
Referencia 2

Codigo de exemplo

services:
  rabbitmq:
    image: rabbitmq:3-management
    ports:
      - 5672:5672
      - 15672:15672
    healthcheck:
      test: rabbitmq-diagnostics -q ping
      interval: 30s
      timeout: 30s
      retries: 3
  my_app:
    image: my_app
    depends_on:
      rabbitmq:
        condition: service_healthy
1

vou testar essa opção
rabbitmq: image: rabbitmq:3.8.17-management healthcheck: test: rabbitmq-diagnostics check_port_connectivity interval: 30s timeout: 30s retries: 10

talvez funcione

1
1

Já tive problemas similares Txug0, infelizmente utilizando o depends do docker, em teoria o container operacional do docker do seu rabbitmq já subiu, mas o rabbit ainda está inciando e subindo os serviços internos.

O que eu fiz para resolver foi que se preciso que a aplicação espere outro serviço iniciar antes dela, eu utilizo utilizar o netcat nc para testar conexão com o IP e PORTA a cada dois segundos e enquanto não tiver conexão a aplicação não inicia, "travando" o terminal nessa etapa. (segue um exemplo e abixo ou no repo aqui)

entripoint.sh

wait_rabbitmq() {
  while ! nc -z 127.0.0.1 5672; do
    echo "Aguardando RabbitMQ iniciar..."
    sleep 2
  done
}

wait_rabbitmq

Tenho um exemplo em um projeto teste que fiz recentemente https://github.com/gabolera/df-php-project/blob/main/worker-importer/entrypoint-node.sh

1

Cara, fiz quase a mesma coisa, porem criei dentro do codigo uma função pra olhar se o Rabbit ta disponivel pra abrir conexão usando um while 1.