2016-11-02 10 views
7

だから、私はこのような構造にドッキングウィンドウ・コンプロジェクトを持って実行されません:ドッカーPostgreSQLの - /docker-entrypoint-initdb.dでスクリプトが

DockerDev 
- docker-compose.yaml 
- d-php 
    - Dockerfile 
    - scripts-apache 
- d-postgresql 
    - Dockerfile 
    - scripts 
    - dev_data_setup.sql 
- logs 
- pgdata 
- www 

PHP、Redisのを、ElasticSearchはOKです。しかし、PostgreSQLはdev_data_setup.sqlを実行しません。私が見つけた/dockes-entrypoint-initdb.d(ボリューム、ADD、COPYなど)に対する解決策はありません。私は実行し、スクリプトと何もシャッとしてみました。

このドッカーの作成とDockerfileが表示され、私を助けてくれますか?おかげ

Dockerfile:

FROM postgres:latest 
ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d 

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

version: '2' 
services: 
    php: 
    build: ./d-php/ 
    hostname: www.domain.com 
    ports: 
     - "80:80" 
    volumes: 
     - ./www:/var/www/html 
     - ./d-php/scripts-apache2/apache2.conf:/etc/apache2/apache2.conf 
     - ./d-php/scripts-apache2/web.conf:/etc/apache2/sites-enabled/web.conf 
     - ./d-php/scripts-apache2/webservice.conf:/etc/apache2/sites-enabled/webservice.conf 
     - ./logs:/var/log/apache2 
    links: 
     - db 
     - redis 
     - elasticsearch 
    db: 
    build: ./d-postgresql/ 
    volumes: 
     - ./pgdata:/pgdata 
    environment: 
     - POSTGRES_USER=postgres 
     - POSTGRES_PASSWORD=postgres 
     - PGDATA=/pgdata 
    redis: 
    image: redis:latest 
    elasticsearch: 
    image: elasticsearch:2.4.1 
+0

私に見えます。あなたがpostgresのコンテナにexecすると '/ docker-entrypoint-initdb.d /'にあなたのファイルを見ることができます。試してみてください: 'docker-compose exec db ls -al/docker-entrypoint-initdb.d /' 'docker-compose logs db' – BMitch

+0

postgresコンテナの'/docker-entrypoint-initdb.d/'に関するTILなので、ありがとう! :) – larsks

+0

ファイルがあります。これはdbからのログです: –

答えて

1

だから問題が見つかりました。 まず、私のsqlスクリプトがpostgresユーザーを再作成しようとしていました。次に、dockedev_dbが終了しました。 2番目:ドッカーに関連するすべての画像を削除する必要がありました。スクリプトをもう一度実行してください。

ありがとうございました。

0

あなたの問題は、あなたのDockerfileでADDを使用する方法によって引き起こされる:

FROM postgres:latest 
ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d 

これが作成されますdev_data_setup.sqlファイルの内容を持つ/docker-entrypoint-initdb.dというファイルがあります。あなたが欲しいのは、/docker-entrypoint-initdb.dをディレクトリとして扱うことです。

次のいずれかにごADDコマンドを変更する必要があります。

ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d/ 

最後のスラッシュはディレクトリとしてdestパラメータを扱います。または使用する

ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d/dev_data_setup.sql 

具体的には、ファイル名のスペルがあります。

参考:<dest>は最後のスラッシュで終わっていない場合はhttps://docs.docker.com/engine/reference/builder/#/add

、それは通常のファイルとみなされ、<src>の内容は<dest>に書き込まれます。

+0

ありがとうございましたが、これも試しました。動いていない。スクリプトはコピーされますが、データベースの起動時にコンテナはスクリプトを実行しません。私はどのように言うと、マウントボリュームのようなさまざまな設定で何度も試してみました。そして何も。しばらくの間、私はpostgresqlをインストールしたUbuntuイメージを使用しています。 –

+0

あなたはこの問題に遭遇しているようです:https://github.com/docker-library/postgres/issues/193 – nwinkler

+0

愚かな提案:ビルドする前に 'chmod 755 dev_data_setup.sql'。ドッカーは実行可能でないものを実行しません。 –

関連する問題