Dockerfile内でcondaの仮想環境に入る
https://pythonspeed.com/articles/activate-conda-dockerfile/
仮想環境
code:Dockerfile
FROM continuumio/miniconda3
WORKDIR /app
# Create the environment:
COPY environment.yml .
RUN conda env create -f environment.yml
# Make RUN commands use the new environment:
SHELL "conda", "run", "-n", "myenv", "/bin/bash", "-c"
# Make sure the environment is activated:
RUN echo "Make sure flask is installed:"
RUN python -c "import flask"
# The code to run when container is started:
COPY run.py .
ENTRYPOINT "conda", "run", "-n", "myenv", "python", "run.py"
上記事の解説
RUN conda activate myenv
これはだめ
https://pythonspeed.com/articles/activate-virtualenv-dockerfile/
RUNは全部別のプロセス
そもそも、RUNはimage作成時で、CMDはコンテナでのコマンド
RUNとCMDの違い
別プロセスなのでconda init bashも無理
code:Dockerfile
# Make RUN commands use the new environment:
SHELL "conda", "run", "-n", "myenv", "/bin/bash", "-c"
SHELL
https://docs.docker.com/engine/reference/builder/#shell
json記法必須
RUNなどのコマンドのデフォルトシェルを変更するコマンド
The default shell on Linux is ["/bin/sh", "-c"], and on Windows is ["cmd", "/S", "/C"]
上のようにすれば以降のコマンドを全部conda仮想環境化のコマンドにできる
https://hynek.me/articles/docker-signals/