Dockerfile内でconda activateする
公開されているコードを試す際、セットアップにconda activate xxxx
が必要な場合がある。
以下のissueを参考にconda activateした状態でインストールを行うことができたのでメモ。
Activating environment in dockerfile - related to #81 · Issue #89 · ContinuumIO/docker-images · GitHub
解決方法
Dockerfileに以下の様に記述する。myenvが仮想環境の名前。
FROM continuumio/miniconda3 # create myenv RUN conda create -n myenv python=3.6 # activate myenv ENV CONDA_DEFAULT_ENV vilbert-mt # env setting(こちらはコンテナに入った時のため) RUN echo "conda activate myenv" >> ~/.bashrc ENV PATH /opt/conda/envs/vilbert-mt/bin:$PATH
その他の解決方法
conda run を使う方法
こちらの記事を参考にした。こちらでもactivateが適用された状態でインストールができることは確認済み。ただし、コンテナを起動した際の環境は baseのままになる。
Activating a Conda environment in your Dockerfile
Dockerfileに以下のように記述する
FROM continuumio/miniconda3 RUN conda create -n myenv python=3.6 SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"]
conda activateと&&で接続して行う方法
冒頭のissueに書いてあるもの。RUNは実行毎に独立しており設定が引き継がれないので、conda activateしても次のRUNではactivateされていない状態で処理が行われるらしい。
それを回避するためにスタックして書けば良いとのこと。
FROM continuumio/miniconda3 RUN conda create -n myenv python=3.6 RUN /bin/bash -c ". activate myenv" && \ pip install pandas && \ pip install ../mylocal_package/