2016-04-14 12 views
4

docker-composeを使用して.sqlダンプファイルをインポートする際に問題があります。私は明らかにdocker-entrypoint-initdb.dから.sqlファイルをロードするドキュメントに従ってきました。しかし、docker-compose upを実行すると、sqlファイルはコンテナにコピーされません。Docker Compose mysql import .sql

私は-vfフラグでコンテナを停止しようとしましたが、それでも動作しませんでした。 .ymlスクリプトで何か間違っていますか?

私の作成ファイルがあるルートのディレクトリdatabase/db-dump /にdump.sqlがあります。

frontend: 
    image: myimage 
    ports: 
    - "80:80" 
    links: 
    - mysql 
mysql: 
    image: mysql 
    ports: 
    - "3306:3306" 
    environment: 
    MYSQL_ROOT_PASSWORD: rootpass 
    MYSQL_USER: dbuser 
    MYSQL_PASSWORD: userpass 
    MYSQL_DATABASE: myimage_db 
    volumes: 
    - ./database/db-dump:/docker-entrypoint-initdb.d 
+0

あなたのドッキングウィンドウ-コンは私のマシンに取り組んでいます。あなたのダンプ場所の構造をホストに貼り付け、どのファイルがコンテナにコピーされたかを確認してください。 – Cortwave

+0

構成がmysqlコンテナに接続され、常に空であるdocker-entrypoint-initdb.dディレクトリを確認すると、dir構造は "database> db-dump> dump.sql"になります – GafferG

答えて

15

私を設定するボリュームを持つ多くの試みは、私がDockerfileに次

FROM mysql:5.6 

ADD dump.sql /docker-entrypoint-initdb.d 

でMySQLに基づいて別の画像を作成し、回避策

が続いて構成し、RANからボリュームを削除した後新しいイメージ

frontend: 
    image: myimage 
    ports: 
    - "80:80" 
    links: 
    - mysql 
mysql: 
    image: mymysql 
    ports: 
    - "3306:3306" 
    environment: 
    MYSQL_ROOT_PASSWORD: rootpass 
    MYSQL_USER: dbuser 
    MYSQL_PASSWORD: userpass 
    MYSQL_DATABASE: myimage_db 

この方法では、ダンプは常にコピーされます以上と起動

+0

次を参照してください。 https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb – creekorful

4

ドキュメントドッカ(MySQLの)上で実行します。https://hub.docker.com/_/mysql/ enter image description here

+0

/docker-entrypoint-initdb.dは、コンテナの作成時にのみ読み込まれます。そしてOPはドッカーの作成を実行するときにデータベースの「更新」を求めていました。 – creekorful