LoginSignup
0
4

More than 3 years have passed since last update.

Docker + Flask(Python) + Jupyter notebookによる仮想環境構築

Last updated at Posted at 2019-12-01

毎回構築の方法を忘れるため、備忘録として。

ファイル構成

project
    L Dockerfile
    L app.py

Dockerfile

javaを利用するライブラリをインストールする可能性があるので、default-jdkを追加しています。

Dockerfile
FROM python:3.6
RUN apt-get update && apt-get install -y \
    default-jdk \
    build-essential \
    gfortran \
    libblas-dev \
    liblapack-dev \
    libxft-dev \
    swig \
    && rm -rf /var/lib/apt/lists/*
RUN echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.bash_profile && \
    . ~/.bash_profile && \
    cd ~ &&\
    git clone https://github.com/taku910/mecab.git && \
    cd mecab/mecab && \
    ./configure  --enable-utf8-only && \
    make && \
    make check && \
    make install && \
    cd ../mecab-ipadic && \
    ./configure --with-charset=utf8 && \
    make && \
    make install &&\
    cd ~ &&\
    git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git && \
    cd mecab-ipadic-neologd && \
    ./bin/install-mecab-ipadic-neologd -n -y
RUN pip3 install --upgrade pyzmq --install-option="--zmq=bundled" && \
    pip3 install --upgrade jupyter && \
    pip3 install --upgrade \
    pandas \
    neologdn \
    Flask \
    numpy \
    Pillow \
    tensorflow \
ENV LD_LIBRARY_PATH "/usr/local/lib:$LD_LIBRARY_PATH"
VOLUME /notebook
WORKDIR /notebook
EXPOSE 8888
ENTRYPOINT jupyter notebook --ip=0.0.0.0 --allow-root --no-browser

Docker imageの作成

Dockerfileのディレクトリに移動して、docker buildコマンドを実行。構築に数分かかります。

$ cd project
$ docker build -t image_name --force-rm=true .

# (-t イメージ名) イメージ名を自分で決定
# (--force-rm=true) イメージのビルドに失敗したら、イメージを自動で削除する

Docker containerの作成

描きコマンドを実行すると、自動でJupyter notebookが起動するので、表示されたURLにアクセスするとJupyter notebookが利用できる。

# 上と同じディレクトリで下記コマンド実行
$ docker run -v `pwd`:/notebook -p 8888:8888 -p 5000:5000 -it --name container_name image_id /bin/bash

# http://127.0.0.0:8888/?token=####################
# こんな感じのアドレスが出てくるため、tokenごとコピペする。

追加のライブラリをインストール

Jupyter notebookで作業している時に、足りないライブラリをインストールしたい場合は、コンテナの外から、下のコマンドでコンテナの中に入る。

$ cd project
$ docker exec -it container_name /bin/bash

# 上記コマンドでコンテナ内に入ると、ターミナルが下のように切り替わる。
root@ユーザー名:/notebook# ここにコマンドを入力できるようになる。

# インストールの例
root@ユーザー名:/notebook# pip install numpy

Flaskの環境構築

app.pyをDockerfileと同じディレクトリに作成して、下記コードとコマンドを実行すると、アプリケーションが立ち上がります。

app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return "Hello World!"

if __name__ == '__main__':
    app.run()
$ python hello.py
0
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
0
4