tag:crieit.net,2005:https://crieit.net/tags/cd/feed 「cd」の記事 - Crieit Crieitでタグ「cd」に投稿された最近の記事 2021-12-17T23:53:02+09:00 https://crieit.net/tags/cd/feed tag:crieit.net,2005:PublicArticle/17871 2021-12-17T23:53:02+09:00 2021-12-17T23:53:02+09:00 https://crieit.net/posts/no-effect-cd-command-in-dockerfile-20211217 Dockerfile で cd が効かない <p>Dockerfile で cd コマンドが効かなかったので対処。</p> <h2 id="現象"><a href="#%E7%8F%BE%E8%B1%A1">現象</a></h2> <pre><code class="dockerfile">RUN cd /var/hoge/ RUN wget https://example.jp/hoge_package.tar.gz RUN tar zxvf hoge_package.tar.gz RUN cd hoge_package </code></pre> <p>という風に記述したところ、「<code>hoge_package</code> はありません」という旨のエラーで怒られました。</p> <h2 id="原因"><a href="#%E5%8E%9F%E5%9B%A0">原因</a></h2> <p>Dockerfile ではコマンドごとにコンテナを作るため、カレントディレクトリは常にルートになるとのことです。</p> <h2 id="対処"><a href="#%E5%AF%BE%E5%87%A6">対処</a></h2> <p>cd の後に <code>\</code> でコマンドを繋げるという方法もありますが、今回は <code>WORKDIR</code> で対処。</p> <pre><code class="dockerfile">WORKDIR /var/hoge/ RUN wget https://example.jp/hoge_package.tar.gz RUN tar zxvf hoge_package.tar.gz WORKDIR hoge_package </code></pre> <p>これでOKです。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://christina04.hatenablog.com/entry/2014/10/31/101510">Dockerfile で cd が効かない - Carpe Diem</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/DogFortune/items/05bf806ecbb256a823f8">Dockerfileの「RUN mkdir /path && cd /path」はWORKDIRで一発 - Qiita</a></li> </ul> arm-band