Dockerfile で cd が効かない

Dockerfile で cd コマンドが効かなかったので対処。

現象

RUN cd /var/hoge/
RUN wget https://example.jp/hoge_package.tar.gz
RUN tar zxvf hoge_package.tar.gz
RUN cd hoge_package

という風に記述したところ、「hoge_package はありません」という旨のエラーで怒られました。

原因

Dockerfile ではコマンドごとにコンテナを作るため、カレントディレクトリは常にルートになるとのことです。

対処

cd の後に \ でコマンドを繋げるという方法もありますが、今回は WORKDIR で対処。

WORKDIR /var/hoge/
RUN wget https://example.jp/hoge_package.tar.gz
RUN tar zxvf hoge_package.tar.gz
WORKDIR hoge_package

これでOKです。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。