環境
- Ubuntu 14.04
- Docker 1.3
現象
Dockerfile に
RUN cd /hoge/fuga RUN ./piyo
といった形で実行したところ「piyo なんてファイルはありません」と怒られた。
原因
Docker のビルドでは Dockerfile の各命令ごとにコンテナを作るため、
デフォルトだと各命令時のカレントディレクトリは常に「/」になる
解決策1
WORKDIR /hoge/fuga RUN ./piyo
のように、cd の代わりに WORKDIR を使います。
WORKDIR を使うと、それ以降の命令は全てそのフォルダ内で実行されることになります。
解決策2
RUN cd /hoge/fuga && ./piyo
のように1行に命令をまとめてしまえば大丈夫です。
長くなってしまった場合は
RUN cd /hoge/fuga && \ ./piyo
のように「\」を使うと見やすくなります。