PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Docker wartet, bis postgresql ausgeführt wird

Ich habe einige Stunden damit verbracht, dieses Problem zu untersuchen, und ich habe eine Lösung gefunden. Docker depends_on Betrachten Sie einfach den Dienststart, um einen anderen Dienst auszuführen. Dann passiert es, weil sobald db gestartet wird, versucht die Service-App, sich mit Ihrer db zu verbinden , aber es ist nicht bereit, Verbindungen zu empfangen. Sie können also db überprüfen Integritätsstatus im App-Dienst, um auf die Verbindung zu warten. Hier ist meine Lösung, sie hat mein Problem gelöst. :)Wichtig:Ich verwende Docker-Compose Version 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:

In diesem Fall ist es nicht notwendig, eine .sh-Datei zu erstellen. Ich hoffe, es hilft euch;)cya