PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Docker attend que postgresql soit en cours d'exécution

J'ai passé quelques heures à enquêter sur ce problème et j'ai trouvé une solution.Docker depends_on considérez simplement le démarrage du service pour exécuter un autre service. Cela arrive car dès que db est démarré, service-app essaie de se connecter à votre db , mais il n'est pas prêt à recevoir des connexions. Ainsi, vous pouvez vérifier db état de santé dans le service d'application pour attendre la connexion. Voici ma solution, elle a résolu mon problème. :)Important :j'utilise 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:

Dans ce cas, il n'est pas nécessaire de créer un fichier .sh. J'espère que cela vous aidera;)cya