2017-11-19 13 views
0

私は2年生のコンピュータサイエンスの学生です。私はmysqlドッカーの設定にいくつか問題があります。 割り当てとして、2つのドッカー画像を作成する必要があります(1つはapache/php、1つは簡単なPHP Webページ、もう1つはmysql)。私は既にそれほど難しいことではなかったapache/phpドッカーを作成しましたが、私はmysqlとかなり闘っています。mysql/mysql-server dockerfileの設定に関する問題

ファイル

./Dockerfile 
./test.sql 

Dockerfile

FROM mysql/mysql-server 

ENV MYSQL_ROOT_PASSWORD=lindert 

RUN mkdir /usr/sql 
RUN chmod 644 /usr/sql 
ADD test.sql /usr/sql/test.sql 

run MYSQL -u root -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE \ 
shippingdb" && mysql -u root -p${MYSQL_ROOT_PASSWORD} shippingdb < 
/usr/sql/test.sql 

私は実行 'ドッキングウィンドウビルドを。'このエラーがポップアップ表示:誰かが助けることができれば、私はこの問題を解決する方法を見当もつかない

mysql: [WARNING] Using a password on the command line interface can be 
insecure. 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket 
'/var/lib/mysql/mysql.sock' (2) 

私は今3時間グーグルでてきたと私はまだ答えを見つけられませんでした、いいだろう。 ありがとう!

+0

ビルドプロセス中にSQLサービスが実行されるとは思わない。ドッカーファイルから最後のRUNコマンドを削除し、PHPコンテナにデータベースの接続と初期化をさせたいと思うでしょう。これは、少なくとも私の経験ではビルドステップ中に行うことではありません。 – DivXZero

+0

私はポストグルと似た経験をしましたが、これはあなたが正しい方向に向かうかもしれません。私はビルド中にこのようなことをしようとしていましたが、ビルド中にはポストグルが実行されていません。ここでは、mysqlコマンドを実行しようとしているかもしれませんが、mysqlは実際には動作していません。[docker-entrypoint.sh](https://github.com/docker-library/mysql/blob/master/8.0/docker -entrypoint.sh)は、実際にイメージを実行するときに起動します。 – bluescores

答えて

0

sqlファイルを '/docker-entrypoint-initdb.d'パスにマウントすると、インポートされます。 SQLファイル

IEであなたの「DATABASEを作成」の呼び出しを入れて:作業/ルートディレクトリ内DockerfileおよびSQLファイル

FROM mysql/mysql-server 

ENV MYSQL_ROOT_PASSWORD=lindert 

RUN mkdir /usr/sql 
RUN chmod 644 /usr/sql 
VOLUME ./ /docker-entrypoint-initdb.d 

これは公式のMySQLの画像 https://hub.docker.com/_/mysql/

用ドッキングウィンドウハブページに記載されています
関連する問題