web-dev-qa-db-ja.com

すべての依存関係を含むpythonパッケージをDockerイメージにインストールする方法は?

私はUbuntu 15.10でPysparkjupyter/pyspark-notebook。依存関係のあるfoliumをインストールし、コンテナーにPysparkスクリプトを実行する必要があります。 Dockerを正常にインストールし、イメージをプルして、コマンドで実行しました

docker run -d -p 8888:8888 -p 4040:4040 -v /home/$MYUSER/$MYPROJECT:/home/jovyan/work jupyter/pyspark-notebook

次に、問題なくコード例を実行します

import pyspark
sc = pyspark.SparkContext('local[*]')

# do something to prove it works
rdd = sc.parallelize(range(1000))
rdd.takeSample(False, 5)

私は/opt/condaでconda環境を探しました( documentation で言うように)が、/optフォルダにcondaがありません。次に、すべての依存関係を持つminiconda3とfoliumを通常のPythonパッケージ(Dockerは含まれません)としてインストールしました。

動作しません。画像を実行してimport foliumでパッケージをインポートしようとすると、Foliumパッケージが見つかりません。

ImportErrorTraceback (most recent call last)
<ipython-input-1-af6e4f19ef00> in <module>()
----> 1 import folium

ImportError: No module named 'folium'

したがって、問題は2つの質問に減らすことができます。

  1. コンテナのcondaはどこにありますか?
  2. 必要なPythonパッケージをコンテナにインストールする方法を教えてください。
13
jocerfranquiz

最初の質問に答えるためにconda環境はどこにありますか?コンソールで実行するだけです$ docker my_containers_name ls /opt/conda

2番目の質問には2つのオプションがあります。

  • 次のコマンドを実行して、コンテナーコンソールを開くことができます

    $ docker exec -it my_containers_name /bin/bash

    そして通常のcondaパッケージのようにパッケージをインストールします

    conda install --channel https://conda.anaconda.org/conda-forge folium

  • DockerイメージのDockerfileを変更したり、以前のイメージを拡張した新しいファイルを作成したりできます。新しいDockerfileを作成して行を追加するには

    FROM jupyter/minimal-notebook
    USER jovyan
    RUN conda install --quiet --yes --channel https://conda.anaconda.org/conda-forge folium && conda clean -tipsy
    

    そして、新しいイメージを構築します。元のDockerfileを変更する場合は、最初の行をスキップする必要があります。

元のプロジェクト をフォークすることで、独自の Dockerfile を作成します。

コメントありがとう warmoverflow および ShanShan

9
jocerfranquiz