2017-02-28 4 views
1

最新のMacOS用Dockerを最新のMacOSで使用する。Dockerfile RUNでエコーオプションが表示されるのはなぜですか?

FROM debian:8 
ENV DEBIAN_FRONTEND noninteractive 
RUN apt-get update -y -q \ 
    && apt-get install -y -q apt-utils \ 
    && apt-get upgrade -y -q \ 
    && apt-get install -y -q ssh build-essential libssl-dev libffi-dev python-dev python-pip python-six openjdk-7-jdk \ 
    && mkdir -p /etc/ansible \ 
    && echo -e "[ssh_connection]\nssh_args = -o ControlMaster=no -o ControlPersist=60s\n" > /etc/ansible/ansible.cfg 

問題はechoコマンドである:

は私がDockerfileを持っています。そのコマンドによって生成されたファイルの内容は次のとおりです。

-e [ssh_connection] 
ssh_args = -o ControlMaster=no -o ControlPersist=60s 

-eオプションも同様に印刷されます!エールで選択されたオプションは、改行が解析されていることからも明らかです。実際、コンテナに接続して同じコマンドを再度実行すると、正しいファイルの内容が得られます。私は、これはRUNで各引数を引用docker buildに問題があるかもしれないと思ったが、私はecho "-e" "X\nY"コマンドプリントを実行した場合でも:

X 
Y 

誰もこれが起こる理由を任意のアイデアを持っていますか? RUNに二重引用符を使用しない

RUN bash -c 'echo -e ...' 

Source

答えて

5

してみてください。環境変数を設定する場合は、必ず一重引用符を使用するか、ENV変数を使用してください。

例:私は、二重引用符付きたく取引をしませんので、

echo '******* Installing PPA pack ********' 

ENV JAVA_HOME /usr/bin/java 
+1

私は、 '/ binに/ echo'で' echo'を置き換えます。 –

0

ベター:ランニング

関連する問題