趣味で計算流砂水理

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

Dockerでcondaの仮想環境をつくる

スポンサーリンク

dockerでpython環境を作る場合はpipを使うことが多いですが、依存性を考えるとcondaを使いたいところです。

例えば私が愛用しているgeoviewsの公式 には、

GeoViews itself is also installable using pip, but to do that you will first need to have installed the dependencies of cartopy, or else have set up your system to be able to build them.

と記載されており、condaを使ったほうが良いです。

サンプルとして、minicondaをベースにpanelパッケージが使える仮想環境pyvizを作るdockerfileを示します。 (インストール方法は2020/4/16時点pyviz関連の不具合の解消法 - 趣味で計算流砂水理を参照)

FROM continuumio/miniconda3

RUN conda create -n pyviz python=3.7

# Make RUN commands use the new environment:
SHELL ["conda", "run", "-n", "pyviz", "/bin/bash", "-c"]

RUN conda run -n pyviz \
&& conda install -y -c conda-forge bokeh=1.4.0

RUN conda run -n pyviz \
&& conda install -y -c pyviz geoviews panel

ENTRYPOINT ["conda","run","-n","pyviz"]

解説すると、2行目の

RUN conda create -n pyviz python=3.7

で仮想環境pyvizを作ります。

普通に考えるとpyvizをactivateすれば良いですが、dockerfileの場合、RUNコマンド実行後に環境がbaseに戻ってしまいます。

そこで、次のようにbashコマンドやcondaコマンドを実行する場合に毎回pyviz環境を指定する必要があります。

SHELL ["conda", "run", "-n", "pyviz", "/bin/bash", "-c"]

RUN conda run -n pyviz \
&& conda install -y -c conda-forge bokeh=1.4.0

最後にENTRYPOINTを指定しておくとdocker run時にconda~を打つ必要がなくなります。

ENTRYPOINT ["conda","run","-n","pyviz"]

参考サイト

Anaconda の公式 Docker イメージがアクティベーションしないと使えなくなった件 - Qiita Activating a Conda environment in your Dockerfile