2017-02-15 4 views
1

Postgres Dockerイメージを起動した後にデータベースを作成したいとします。Postgres Dockerコンテナにデータベースを作成するにはどうすればよいですか?

私のデータベース作成コマンドをドッカー作成ファイルまたは子ドッカーファイルに置くと、実際にpostgresを起動するためのベースイメージのコマンドが上書きされるため、接続先のサーバーが起動していません。

例えば:

version: '2' 
services: 
    db: 
    command: bash -c "su - postgres -c '/usr/lib/postgresql/9.6/bin/psql -h 127.0.0.1 -p 6543 -U postgres -c \"create database dev;\"'" 
    environment: 
     - PGDATA=/pg 
     - POSTGRES_PASSWORD=postgres 
     - POSTGRES_USER=postgres 
    image: postgres:9.6 
    ports: 
     - '6543:5432' 
    tmpfs: /pg 

そしてimage documentationは、彼らはPostgresのを開始するために実行されている正確なコマンドを言っていません。私はbash -c "postgres && ...をコマンドの冒頭に置こうとしましたが、Postgresをrootとして起動できないことを伝えていません。

私が見つけることができる唯一の可能な解決策は、docker run postgres:9.6 psql -h postgres -U postgres -c 'create database'のようなbashスクリプトソリューションを利用して、ドッカーの作成とドッキングファイルを放棄することですが、これは恐ろしいことです。

どうすればよいですか?

答えて

3

私はこのようにはしません。なぜ、希望のDB名で2番目のコンテナを起動しないのですか?

environment: 
    - PGDATA=/pg 
    - POSTGRES_PASSWORD=postgres 
    - POSTGRES_USER=postgres 
    - POSTGRES_DB=dev 

すべてのデータベースのコンテナを実行するだけで、これをクリーンなソリューションとして使用することをお勧めします。

関連する問題