Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

259
Visualizações
¿Cómo hacer que un servicio espere a que otro esté listo?

Estoy usando flyway con mysql db. Los uso como servicios en un docker-compose y luego los uso en el DockerComposeEnvironment de testcontainer. El problema es que aunque agregué la clave depends_on en el servicio 'flyway' para MySQL 'db', testcontainer inicia flyway primero y esto da como resultado que las migraciones no se apliquen.

Quiero saber si hay un método por el cual podemos hacer que el contenedor de ruta migratoria se ejecute solo cuando el contenedor db está listo.

Estoy usando este código para inicializar mi entorno de prueba docker-compose ( test_mysql y flyway_c son los nombres de los contenedores de los servicios):

 const environment = await new DockerComposeEnvironment(composeFilePath, composeFile) .withWaitStrategy('test_mysql', Wait.forLogMessage(`ready for connections. Bind-address: '::' port:`)) .withWaitStrategy('flyway_c', Wait.forLogMessage(`Successfully applied`)) .withStartupTimeout(120000) .up();

Este es mi archivo docker-compose:

 version: '3' services: db: image: mysql:8.0.26 environment: - MYSQL_DATABASE=test_db - MYSQL_ROOT_PASSWORD=pass command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password ports: - '3306:3306' - '33060:33060' expose: - '3306' container_name: test_mysql flyway: image: flyway/flyway command: -url=jdbc:mysql://db -schemas=test_db -user=root -password=pass -connectRetries=100 migrate volumes: - .:/flyway/sql depends_on: - db container_name: flyway_c

Cualquier ayuda sería apreciada. ¡Gracias!

EDITAR :

Este problema no es causado por docker-compose. En otras palabras, el flyway del servicio espera db si se ejecutan como docker-compose up pero fallan cuando se ejecutan dentro de la biblioteca npm de testcontainers. Entonces, Docker Compose espera el contenedor X antes de iniciar Y realmente no resuelve esto.

He agregado la respuesta que usé para resolver esto por mí. ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Después de una larga sesión de registro y depuración, el problema parece ser el tiempo de espera. Los 120000 ms que especifiqué resultaron ser insuficientes para que se encendiera el contenedor MySQL. Aumentar el tiempo de espera para decir 150000ms funciona.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda