LoginSignup
4
4

More than 5 years have passed since last update.

Pillow環境構築 -- Docker + iPythonの場合(あと、OpenCVも)

Last updated at Posted at 2015-03-29

なにがやりたいのか

  • Docker上にiPythonをのせて、どこでも使えるようにする
  • Pillowによる画像処理
  • OpenCVによる画像処理

動作する環境があればいい方はこちらから → Docker + iPythonで画像処理(設定編) - Qiita

この前作った、virtualenvの環境、Dockerで作ったらどうなるだろうと調べてみたら…
すでにやった方がおられました。

Docker で IPython Notebook を動かす - Qiita

はい。もう必要なことは全部書いてありますね。

やることがなくなりました。

二番煎じでは面白くないので、少しひねって、Python2.7にしてOpenCVも入れてみました。
(まだUbuntuのOpenCVはPython3に対応していないもよう)
やっていることは元記事のまんまであるという…

なお、このDocker環境はLAN内での利用を想定しています。
セキュリティよりも利便性を優先させています。
インターネット上のサーバー等で実行する場合はご注意ください。

イメージを作成

docker build -t suto3/ipython-pillow:0.1 ./
Dockerfile
FROM ubuntu:14.04

MAINTAINER suto3 <suto3suto3@gmail.com>

ENV DEBIAN_FRONTEND noninteractive

# Not essential, but wise to set the lang
# Note: Users with other languages should set this in their derivative image
RUN apt-get update && apt-get install -y language-pack-en language-pack-ja
ENV LANGUAGE en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8

RUN locale-gen en_US.UTF-8
RUN dpkg-reconfigure locales

# Python binary dependencies, developer tools
RUN apt-get update && apt-get install -y -q \
    build-essential \
    make \
    gcc \
    gfortran \
    libfreetype6-dev \
    libxft-dev \
    libopenblas-dev \
    liblapack-dev \
    libzmq-dev \
    libcurl4-openssl-dev \
    zlib1g-dev \
    git \
    python \
    python-dev \
    python-pip \
    python-sphinx \
    python-mock \
    python-nose \
    python-jinja2 \
    python-tornado \
    python-zmq \
    python-numpy \
    python-matplotlib \
    python-pandas \
    python-scipy \
    python-jsonschema \
    python-requests \
    python-pygments \
    python-pymongo \
    sqlite3 \
    libsqlite3-dev \
    pandoc \
    libopencv-dev \
    python-opencv \
    nodejs \
    nodejs-legacy \
    npm \
    fonts-takao \
    fonts-ipafont \
    curl

RUN apt-get clean

# In order to build from source, need less
RUN npm install -g 'less@<3.0'

RUN pip install invoke
RUN pip install --upgrade \
    pillow \
    mock \
    nose \
    jinja2 \
    tornado \
    pyzmq \
    numpy \
    matplotlib \
    pandas \
    scipy \
    jsonschema \
    requests \
    mistune \
    pygments \
    pymongo \
    patsy \
    statsmodels \
    scikit-learn \
    ggplot \
    networkx \
    bokeh \
    sphinx \
    ipython

RUN iptest2

ENV HOME /root
RUN ipython profile create nbserver

# Install handy extension(s).
RUN ipython -c "%install_ext http://raw.github.com/jrjohansson/version_information/master/version_information.py"

# Configure "nbserver" profile
RUN sed -i \
    -e "s/^# c.NotebookApp.ip = 'localhost'$/c.NotebookApp.ip = '0.0.0.0'/" \
    -e "s/^# c.NotebookApp.port = 8888$/c.NotebookApp.port = 8888/" \
    -e "s;^# c.NotebookApp.notebook_dir = '/.*'$;c.NotebookApp.notebook_dir = '/notebook';" \
    -e "s/^# c.NotebookApp.open_browser = True$/c.NotebookApp.open_browser = False/" \
    -e "s/^# c.IPKernelApp.matplotlib = None$/c.IPKernelApp.matplotlib = 'inline'/" \
    -e "s/^# c.IPKernelApp.extensions = \[\]$/c.IPKernelApp.extensions = ['version_information']/" \
    /root/.ipython/profile_nbserver/ipython_notebook_config.py

# For IPython Notebook to share resources with other containers.
EXPOSE 8888
VOLUME ["/notebook"]

ENV LANG ja_JP.UTF-8
WORKDIR /notebook
# Use shell form to work with notebook.
CMD ipython notebook --profile=nbserver

実行テストその1

docker run -d -p 8080:8888 suto3/ipython-pillow:0.1

ホストのIPアドレス:8080/ で接続できるか確認。

実行テストその2

docker run -d -p 8080:8888 -v $PWD:/notebook suto3/ipython-pillow:0.1

カレントディレクトリが/notebook にマウントされるんだね。

DockerHubに上げる

docker login
docker push suto3/ipython-pillow:0.1

suto3/ipython-pillow Repository | Docker Hub Registry - Repositories of Docker Images

というわけで、上げてみました。

使ってみる

Docker + iPythonで画像処理(設定編) - Qiita

Docker + iPythonで画像処理(Pillow編) - Qiita

Docker + iPythonで画像処理(OpenCV編) - Qiita

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4