2017-11-23 16 views
0

Dockerfileの一部として、ビルド時にユーザーが(ARGとして)ドッカーコンテナに渡す変数を含むようにテキストファイル(ssh_config)を変更しようとしています。私DockerfileでRUNエコーコマンドに対するDockerの引数

私は(これはファイル全体ではありません)があります。

ARG key_name 
RUN echo 'Host geoserver\n\ 
User user\n\ 
HostName 38.191.191.111\n\ 
IdentityFile /root/$key_name' >> /etc/ssh/ssh_config 

これは、引数たキー名を収集し、その後、ssh_configのテキストファイルにテキストを追加します。次のように

この

が実行されます:私は書かれているかを確認するチェックした場合、key_nameは変数が解析されておらず、代わりにテキストとして書かれてい

docker build --build-arg key_name=GC -t pyramid . 

(そう、文字通りとして$ key_nameは) 。明らかに、私はそれをARGを介して渡された変数に置き換えたいと思います。

$key_fileの代わりに${key_file}を使用しようとしましたが、テキストファイルに同じテキストが含まれていますが、中括弧が含まれています。

私の質問は、どのようにRUNエコーステートメント内でARG変数を正しく使用できるのですか?

+0

Dockerfileで '$ {key_name}'(中括弧)を試しましたか? – Munchkin

+0

私はありがとうございます、私はそれを私の質問に追加します –

+0

あなたの 'ARG'はどこですか? 'FROM'の外側か内側? (はい、違いがあります)。さらに、 '' echo'から '' 'を削除しようとします。 – Munchkin

答えて

1

変数を一重引用符で囲むと、置換されません。

ファイル内に単一のqoutesが必要な場合は、すべてを二重引用符で囲みます。そうでない場合は、一重引用符をすべて一緒に削除してください。

ARG key_name 
RUN echo "'Host geoserver\n\ 
User user\n\ 
HostName 38.191.191.111\n\ 
IdentityFile /root/$key_name'" >> /etc/ssh/ssh_config 
関連する問題