2017-01-30 8 views
0

私はmysqlドッカーコンテナーを持っていて、起動しています。私はそれに入り、mysqlプロンプトを見ることができます。私はそれに外部ストレージをマウントしたくありません。このコンテナを起動するたびに、自分のファイルシステムからtest.sqlスクリプトを実行してDBを作成し、そのような操作はほとんどしません。現在の作業ディレクトリに存在するスクリプトを実行すると、それは苦情を申し立てます。私はこれが自明だと知っていますが、私はこの問題を捉えることができません。mysqlスクリプトドッカーを実行しています

/microservices/mysqlcontainer]ドッキングウィンドウの幹部3a21e5e3669d/binに/ shの-c 'のmysql -u rootが< ./test.sql -ppwd' /binに/ SH:./test.sql:そのようなファイルやディレクトリ

+0

test.sqlはイメージ/コンテナ内にありますか? 'docker exec 3a21e5e3669d ls -l test.sql' – BMitch

+0

それは外にありませんし、私はそれが問題であるかもしれないと推測しますが、いくつかのフォーラムはこの構文が働いていると示唆しています。私はこのコンテナに接続し、mysqlのプロンプトを簡単に得ることができました。 docker exec -it mysqltest mysql -u root -ppwd – curiousengineer

答えて

3

あなたのスクリプトはコンテナの外にあるので、シェル入力のリダイレクトをキャッチする必要はありません。次を実行できるはずです:

docker exec -i 3a21e5e3669d mysql -u root -ppwd <./test.sql 
+0

リダイレクト、パイプ、stdoutなどのLinuxの概念を理解しています。あなたは「キャッチする必要はありません...」と少し詳しく説明します。あなたの提案はbtwで動作しました。 – curiousengineer

+1

'/ bin/sh -c 'mysql .... BMitch

+0

ありがとう!私は春のブート+ netflixライブラリを使用して試作している私のマイクロサービスをドッキングすることを試みてきました。これは役に立ちます。私はjsonのWebトークンの認証情報を保持するためにSQLコンテナが必要でした。私の認証サービスがDBと対話できるようになり、mysqlコンテナを起動するたびに、dbはスクリプトで作成されます。私はおそらく自分自身で外部ファイルsysをマウントする方法を読むだろうが、それは私にとって今の優先事項ではない – curiousengineer

関連する問題