この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をイメージに実行するための秘訣は何ですか?
このコメント Githubに投稿された問題に基づいて、これは機能します:
RUN echo 'All of your\n\
multiline that you ever wanted\n\
into a dockerfile\n'\
>> /etc/example.conf
Dockerfileはバッチファイルではありません。すべての行/コマンドは分離され、コミットされます。
内容をファイルに入れて追加/コピーするだけです。カスタマイズする必要がある場合は、SEDします。または、本当に、本当に、本当にCATをファイルに入れたい場合は、実際のバッチファイルに入れてから、追加/コピーしてから実行します。
また、線が少ない=レイヤーが少ない。 70ステップ? Yowzers。
あなたはそれをこのように書くことができます:
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