2016-04-21 7 views
7

私はdocker-composeでロードしたいdump.sqlファイルを持っています。docker-composeを行った後にPostgresダンプをロード

ドッキングウィンドウ-compose.yml:

services: 
    postgres: 
    environment: 
     POSTGRES_DB: my_db_name 
     POSTGRES_USER: my_name 
     POSTGRES_PASSWORD: my_password 
    build: 
     context: . 
     dockerfile: ./devops/db/Dockerfile.db 

私Dockerfile.dbは、現時点では本当に簡単です:

FROM postgres 
MAINTAINER me <[email protected]> 

COPY ./devops/db ./devops/db 
WORKDIR ./devops/db 

私はいくつかの点でpsql my_db_name < dump.sqlのようなコマンドを実行したいと思います。 Dockerfile.dbからこのようなスクリプトを実行すると、スクリプトはビルド後で実行されていますが、docker-compose upの前に実行され、データベースはまだ実行されていません。

どうすればいいですか?

+1

一般的に、私は、ドッキングウィンドウ・作曲アップ-d、SQLダンプを実行するためのコマンドを使用して、その後、ドッキングウィンドウ・作曲のexec db_service_nameを行うbashスクリプトを書くことで、これをやりました。 –

答えて

13

https://hub.docker.com/_/postgres/を読むと、「このイメージを拡張する」セクションは、/ docker-entrypoint-initdb.d内の.sqlがビルド後に実行されることを説明しています。

私はちょうどに私のDockerfile.dbを変更するために必要な:

FROM postgres 

ADD ./devops/db/dummy_dump.sql /docker-entrypoint-initdb.d 

そして、それは働きます!

関連する問題