sql >> Base de Datos >  >> RDS >> PostgreSQL

Docker espera a que se ejecute postgresql

Pasé algunas horas investigando este problema y obtuve una solución. Docker depends_on simplemente considere el inicio del servicio para ejecutar otro servicio. Entonces sucede porque tan pronto como db se inicia, la aplicación de servicio intenta conectarse a su db , pero no está listo para recibir conexiones. Entonces puedes verificar db estado de salud en el servicio de la aplicación para esperar la conexión. Aquí está mi solución, resolvió mi problema. :)Importante:estoy usando docker-compose versión 2.1.

version: '2.1'

services:
  my-app:
    build: .
    command: su -c "python manage.py runserver 0.0.0.0:8000"
    ports:
       - "8000:8000"
    depends_on:
      db:
        condition: service_healthy
    links:
      - db
    volumes:
      - .:/app_directory

  db:
    image: postgres:10.5
    ports:
      - "5432:5432"
    volumes:
      - database:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  database:

En este caso no es necesario crear un archivo .sh. Espero que les ayude;)cya