web-dev-qa-db-ja.com

docker-composeファイルでPSQLデータベースを初期化する方法は?

Docker-composeファイル内でPSQLコマンドを実行できるかどうか知りたいのですが。

次の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

そして、これが正常に実行された後、次のコマンドを実行します:docker exec -i postgres-container psql -U username -d databasename < data.sql

これらの2つのステップは正常に機能します。しかし、私は1つのステップを実行することが可能であるかどうか知りたいと思います。

このコマンドを実行するたびに。データベースが常に新しいことが重要です。これがvolumeに永続化せずにこのコマンドを実行したい理由です。

docker-compose upを実行し、psqlコマンドを実行することはできますか?

前もって感謝します!

8
albertoivo

ボリュームを備えた純粋なdocker-composeソリューション

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

dockerfile によると、起動時にdocker-entrypoint-initdb.dのすべてのSQLデータがダンプされます

6
Siyu