web-dev-qa-db-fra.com

Comment initialiser une base de données PSQL dans un fichier docker-compose?

Je voudrais savoir s'il est possible d'exécuter une commande PSQL dans le fichier docker-compose.

J'ai les éléments suivants docker-compose.yml:

version: '3' 
services:
  postgres:
    image: postgres:9.6
    container_name: postgres-container
    ports:
      - "5432:5432"
    network_mode: Host
    environment:
      - LC_ALL=C.UTF-8
      - POSTGRES_DB=databasename
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=
      - POSTGRES_PORT=5432

Et après que cela fonctionne correctement, j'exécute la commande suivante: docker exec -i postgres-container psql -U username -d databasename < data.sql

Ces 2 étapes fonctionnent bien. Mais j'aimerais savoir s'il est possible de faire un seul pas.

Chaque fois que je veux exécuter cette commande. Il est important que la base de données soit toujours nouvelle. C'est pourquoi je ne le persiste pas dans un volume et je veux exécuter cette commande.

Est-il possible d'exécuter docker-compose up et exécutez également la commande psql?

Merci d'avance!

7
albertoivo

Solution pure docker-compose avec volume,

  volumes:
    - ./data.sql:/docker-entrypoint-initdb.d/init.sql

Selon le dockerfile , au démarrage, il videra toutes les données sql dans docker-entrypoint-initdb.d

6
Siyu