web-dev-qa-db-ja.com

CATコマンドUNIXをDockerfileに起動します

このvagrantコマンドcat(完全に実行!)を起動して、Dockerfileを使用してコンテナーをプロビジョニングしたいと思います。

# Configure Virtualenvwrapper.
RUN cat <<EOF >> /home/docker/.bashrc
# Virtualenvwrapper configuration.
export WORKON_HOME=\$HOME/.virtualenvs
export PROJECT_HOME=\$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
EOF

しかし、建物のイメージドッカーを起動すると、このエラーが返されます。

 ---> 40f9ed8e187d
Removing intermediate container 85f6c8536520
Step 69 : RUN cat <<EOF >> /home/docker/.bashrc
 ---> Running in dcbb3d441f79
 ---> 78acd9c2e5d5
Removing intermediate container dcbb3d441f79
Step 70 : EXPORT
Unknown instruction: EXPORT

Dockerfileを使用してcatコマンドunixをイメージに実行するための秘訣は何ですか?

7
darkomen

このコメント Githubに投稿された問題に基づいて、これは機能します:

RUN echo 'All of your\n\
multiline that you ever wanted\n\
into a dockerfile\n'\
>> /etc/example.conf
11
w1100n

Dockerfileはバッチファイルではありません。すべての行/コマンドは分離され、コミットされます。

内容をファイルに入れて追加/コピーするだけです。カスタマイズする必要がある場合は、SEDします。または、本当に、本当に、本当にCATをファイルに入れたい場合は、実際のバッチファイルに入れてから、追加/コピーしてから実行します。

また、線が少ない=レイヤーが少ない。 70ステップ? Yowzers。

2
user2105103

あなたはそれをこのように書くことができます:

RUN echo "# Virtualenvwrapper configuration." >> /home/docker/.bashrc && \
    echo "export WORKON_HOME=\$HOME/.virtualenvs" >> /home/docker/.bashrc && \
    echo "export PROJECT_HOME=\$HOME/Devel" >> /home/docker/.bashrc && \
    echo "source /usr/local/bin/virtualenvwrapper.sh" >> /home/docker/.bashrc
1
Manuel Schmidt