4
5

More than 5 years have passed since last update.

DockerfileのRUN命令ごとにカレントディレクトリがトップに戻る

Last updated at Posted at 2016-04-22

Dockerでgem install --localをしようとしてハマった時のメモ。
結論から言うと、DockerfileのRUN命令ごとにカレントディレクトリがトップに戻ることを知らなかった。

gemが多かったので、下記のようにgem installを数行に分けていたら、

RUN /bin/bash -c "cd /usr/local/package/lib/gems;"
RUN /bin/bash -c "gem install --local rake"
RUN /bin/bash -c "gem install --local will_paginate"

docker buildすると、

ERROR:  Could not find a valid gem 'rake' (>= 0) in any repository
ERROR:  Could not find a valid gem 'will_paginate' (>= 0) in any repository

というエラーが出る。そこで1行目に、ls -lを追加したところ、ファイルは確かにあるようなので、

RUN /bin/bash -c "cd /usr/local/package/lib/gems;ls -l"
RUN /bin/bash -c "gem install --local rake"
RUN /bin/bash -c "gem install --local will_paginate"

途中にpwdを追加したところ、ルートに戻っていた。

RUN /bin/bash -c "cd /usr/local/package/lib/gems;ls -l"
RUN /bin/bash -c "pwd"
RUN /bin/bash -c "gem install --local rake"
RUN /bin/bash -c "gem install --local will_paginate"

カレントディレクトリを引き継ぐ方法がよくわからなかったので、とりあえず、cdするようにして解決。
(「/」は複数行にRUNを分けるための記法)

RUN /bin/bash -c "cd /usr/local/package/lib/gems;ls -l"
RUN /bin/bash -c "cd /usr/local/package/lib/gems;/
 gem install --local rake will_paginate"
4
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5