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を実行してくれる。
参考: