日々精進

新しく学んだことを書き留めていきます

Dockerfile内で. /opt/conda/etc/profile.d/conda.shを毎回実行しなくて良いようにする

Dockerfileの中でconda環境をactivateした上でコマンドを実行したい場合、

RUN . /opt/conda/etc/profile.d/conda.sh && conda activate myenv RUN python test.py

のようにしてもだめで、RUN実行毎に. /opt/conda/etc/profile.d/conda.sh && conda activate myenv を実行しないといけない。

.bashrcに「. /opt/conda/etc/profile.d/conda.sh && conda activate myenv」を書いてもダメ。理由はRUNで指定したコマンドは/bin/shで実行されるため。/bin/bashではない。

なのでRUN で指定したコマンドを/bin/bashで実行するようにすればいい。それには、Dockerfile内で以下を実行する。

SHELL ["/bin/bash", "-l", "-c"]

これでRUNの前に.bashrcを実行してくれる。

参考:

qiita.com

kazmax.zpp.jp