LoginSignup
27
19

More than 5 years have passed since last update.

Dockerfileで、あえてsourceコマンドで環境変数を設定

Last updated at Posted at 2017-12-09

はじめに

Dockerfileで環境変数を設定するときはENVを使う
Dockerfile Reference

ENV PATH $PATH:/path/to/bin

でも、なんかうまくいかなかったから他の方法でやってみたのでメモ

※ これから書く方法を使用しなくても、以下コマンドでPathを通せるとコメントいただきました。

. ~/.bashrc

環境

  • Windows 10 Pro
  • Docker for Windows

SourceでPathを通す

Dockerfileのビルドはbashではなくshで実行されるため、sourceコマンドを使おうとすると

source : not found

というエラーが出る。
shをbashへのシンボリックリンクで置き換えて、Dockerfileの終了時に元に戻すことで対応する。

例(pyenvへのpathを通して、pyenv経由でanacondaインストール)

RUN mv /bin/sh /bin/sh_tmp && ln -s /bin/bash /bin/sh

#pathを通す
RUN echo 'PATH="$PATH:/path/to/pyenv"' >> ~/.bashrc
#pathを読み込んで処理
RUN source ~/.bashrc && \
  pyenv install anaconda3-5.0.1

RUN rm /bin/sh && mv /bin/sh_tmp /bin/sh

参考:https://stackoverflow.com/questions/20635472/using-the-run-instruction-in-a-dockerfile-with-source-does-not-work

27
19
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
27
19