LoginSignup
8
9

More than 5 years have passed since last update.

Dockerで分析環境構築(jupyter notebook + PostgreSQL)

Last updated at Posted at 2016-12-26

本記事では

  • Dockerを利用したデータ分析環境の構築
  • docker-composeでのpythonとpostgresqlの接続確認

を行っています

imageについて

postgresqlについては、公式のDockerイメージを利用しています。
anaconda環境は、自作のイメージをベースにしたDockerfileを作成しています。

FROM kyobad/anaconda3-alpine

MAINTAINER K.Kato

RUN conda install -y seaborn psycopg2 networkx\
&& pip install chainer

WORKDIR /root/notebook

CMD ["/bin/sh", "-c", "jupyter notebook --no-browser --port=8888 --ip=0.0.0.0"]

こちらは、anaconda環境をベースに、seabornやpsycopg2といった分析環境をインストールしたイメージです。

composeファイルについて

このpython環境と、postgresqlを接続するためのdocker-composeの構成ファイルを作成します。

docker-compose.yml
version: '2'
services:
    db:
        image:
            postgres
        restart:
            always
        environment:
            POSTGRES_USER:
                pythonist
            POSTGRES_PASSWORD:
                password
            POSTGRES_DB:
                mypyenv
        ports:
            - "5432"
        container_name:
            postgres-db
        volumes:
            - ./postgres-db:/var/lib/postgresql/data
            - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    python:
        build: .
        volumes:
            - ./workdir:/root/notebook/
        ports:
            - "8888:8888"
        links:
            - db
        depends_on:
            - db

dbのenvironmentで、ユーザ名やパスワード等を設定しています。これらは適宜変更して使ってください。
volumeで設定している postgres-db/ は、postgresのデータをローカルにマウントしてバックアップを取っています(本当はdataonlyのコンテナを作成することが望ましいとされている?)
docker-entrypoint-initdb.dは、コンテナ起動時の初期設定です。ここに、テーブル作成等のsqlファイルを置いておくと、それらがコンテナ起動時に行われます。
pythonのvolumeは、起動したnotebookをローカルに保存するためのマウントです。

起動方法

これらを置いたディレクトリで、

docker-compose up

コマンドを実行することで、postgresコンテナとjupyter notebookコンテナが立ち上がります。

ブラウザから、localhost:8888にアクセスし、composeファイルに書いてあるdb名やパスワードでdbにアクセス可能です

スクリーンショット 2016-12-26 14.36.13.png

結論

  • Dockerを使うことで簡単に分析環境の構築や再構成等可能になる
  • notebookやpostgresデータをローカルにマウントすることでバックアップ&ポータブルが可能
8
9
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
8
9