2017-11-22 19 views
0

午後の仲間たち、私はいくつかの画像を構築する際にDockerと協力していますが、いくつかの機能がユーザーにパスワードなどの質問をすることがわかりました。Dockerfile RUN読み取りコマンドでエラーが発生する

例えば、このコードは私を送信する画像を作成するプロセス中にユーザに質問して、別のコマンドのためにその計器を通過する可能性は、エラーが次のようにエラーメッセージがある

FROM ubuntu:16.04 
SHELL ["/bin/bash","-c"] 
RUN ["echo","========== Enter root password for db =========="] 
RUN ["/bin/bash","read","pass"] 
RUN debconf-set-selections <<< "mysql-server mysql-server/root_password password $pass" 
RUN debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $pass"` 

があります。

The command '/bin/bash read pass' returned to non-zero code: 127

は、次にビルドプロセス失敗し、これを行うための任意の提案は、ビルド時にユーザーから読み込むには?

+1

なぜあなたのパスにスペースがありますか? '/ bin/bash' –

+0

空白がありません。私は自分のコードを編集しました。(コピー貼りからのエラーです) –

答えて

2

dockerビルドは非対話モードで実行されます。つまり、ビルド中にユーザー入力からパスワードを受け取るための読み取りコマンドを処理できないことを意味します。私は引数を構築使用することをお勧め

ではなく、機能をドッキングウィンドウ - ので、あなたがイメージを構築する前に、ユーザーからのパスを読み、そのプロセスを構築するために、ビルド引数を経由して、それを渡すが、シェルコマンドを使用してパスワードを渡すと平野ことを覚えておいてくださいすることができ、ここでhttps://docs.docker.com/engine/reference/builder/#arg を見ますテキストは本当に安全ではありません。

+0

hmmm私は、ビルド時に引数を渡す必要はないと考えました。 '--build-arg'、あなたの答えに感謝します。 –

+0

ようこそ。 –

関連する問題