2016-08-29 7 views
0

ドッカー画像を作成中に、データベースとインポートスキーマを追加したいと思います。私が試したとき、私は以下のエラーが出た。 '/var/lib/mysql/2da0903ff372.err' にログインMariadbの画像用ドッカーファイル

160829 22時32分44秒mysqld_safeを。 160829 22:32:44 mysqld_safe /var/lib/mysqlからのデータベースでmysqldデーモンを起動する160829 22:32:47 pidファイル/var/run/mysqld/mysqld.pidからmysqld_safe mysqld を入力してくださいERROR 2002(HY000) :ローカルのMySQLサーバに ソケット '/ var/run /mysqld/mysqld.sock'(2 "No such file or directory")経由で接続できません コマンド '/ bin/sh -c/bin/bash -c "は/ usr/binに/ mysqld_safeを&" & &睡眠 & mysqリットル-uルート-e & &のmysql -uルート ポータル< /tmp/ddl.sql & & MYS "DATABASEポータルの作成"以下は、1

私はイメージを作成するために使用しています何Dockerfileです:QL -uルートポータル< /tmp/dml.sqlは」非ゼロのコードが を返しました。

FROM mariadb:latest 
# Author 
MAINTAINER Anvar 
# Add files 
ADD my.cnf /etc/mysql/my.cnf 
ADD ddl.sql /tmp/ddl.sql 
ADD dml.sql /tmp/dml.sql 

RUN /bin/bash -c "/usr/bin/mysqld_safe &" && sleep 5 && mysql -u root -CREATE DATABASE portal" && mysql -u root portal < /tmp/ddl.sql` 

私は間違っていますか?

+1

あなたはmariaDBイメージのエントリポイントスクリプトの小さな見https://github.com/docker-library/mariadb/blob/d969a465ee48fe10f4b532276f7337ddaaf3fc36/10.1/docker-entrypoint.shを持っています。最初にdbが初期化されたときに初期化されることがわかります。あなたのタスクは、コンテナ内の既存の実行可能なdbサーバではなく、ずっと早く実行されます。 –

+0

本当にありがとうございました。私の要件は、あらかじめデータが格納されたデータベーススキーマを持つドッカーイメージを作成することです。それを達成する方法はありますか? –

+0

必要に応じてエントリポイントを延長してください –

答えて

1

単純に、私は/docker-entrypoint-initdb.d/*の中に次々にDDLとDMLの両方のSQLファイルをコピーする必要があります。以下は修正されたコードです。 docker-entrypoint.shには、コンテナを回転させるときにそれらを実行するロジックがあります。

FROM mariadb:latest 
# Author 
MAINTAINER Anvar 
# Add files 
ADD my.cnf /etc/mysql/my.cnf 
ADD ddl.sql /docker-entrypoint-initdb.d/ddl.sql 
ADD dml.sql /docker-entrypoint-initdb.d/dml.sql 
関連する問題