Saltar al contenido

¿Cómo inicializar postgres db con flyway en Docker?

Solución:

Supongo que la razón es el hecho de que depends_on de El flyway el servicio en realidad no verifica que la base de datos dentro de db-container esté funcionando, pero verifica que el contenedor esté activo. Esto es bastante diferente: el contenedor podría estar en funcionamiento en el momento en que la base de datos dentro de él se está iniciando y aún no acepta la conexión.

Para tal caso, debe especificar una verificación de calor para asegurarse de que su base de datos acepta conexiones. Incluso puede encontrar un ejemplo de cómo hacerlo con PostgreSQL en los documentos oficiales de docker-compose.

La versión ‘3+’ del archivo docker-compose no admite el parámetro condition en el depends_on block, pero la versión ‘2.1+’ sí lo hace. Entonces puede crear un archivo de redacción como el siguiente, que usa healthcheck desde el postgres sección, por ejemplo:

version: '2.1'

services:
  my-app:
#   ...  
#   ... 
    depends_on:
      - flyway

  flyway:
    image: boxfuse/flyway:5-alpine
    command: -url=jdbc:postgresql://postgres:5432/mydb -schemas=public -user=postgres -password=postgres migrate
    volumes:
      - ./migration:/flyway/sql
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    domainname: postgres
    build: ./migration
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-U", "postgres"]
      interval: 5s
      timeout: 1s
      retries: 2
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *