2018年10月2日火曜日

DockerでJupyter Notebook、folium、requests、postgresqlがインストールされたコンテナのイメージを作成する

Jupyter Notebookと地図を描画できるパッケージfolium、HTTPリクエストを簡素化するrequests、postgresqlにアクセスするpsycopg2とPostgreSQLがインストールされたコンテナのイメージを作成するには、以下の手順を実行します。

〇foliumで描画した地図


○構築方法
以下の手順で、Jupyter Notebookとfolium, requests, psycopg2のコンテナを構築・実行します。
1. folium, requests, psycopg2を追加したJupyter Notebookイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t scipy-notebook-requests-folium-pg .

Dockerfile
FROM jupyter/scipy-notebook
ENV TZ=Asia/Tokyo
USER root
RUN apt-get update \
  && apt-get -y install libpq-dev python-dev \
  && pip install psycopg2-binary \
  && pip install requests \
  && pip install folium \
  && apt-get clean
USER $NB_UID

2. Jupyter Notebookの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  scipy-notebook:
    image: scipy-notebook-requests-folium-pg
    container_name: "scipy-notebook-requests-folium-pg"
    volumes:
      - "scipy-notebook-data:/home/jovyan/work"
    ports:
      - "8888:8888"
    environment:
      JUPYTER_TOKEN: jupyter
      JUPYTER_ENABLE_LAB: 1
    depends_on:
      - db
  db:
    image: postgres:10.5-alpine
    container_name: "test-db"
    ports:
      - "5432:5432"
    volumes:
      - "db-data:/var/lib/postgresql/data"
    environment:
        POSTGRES_DB: test
        POSTGRES_PASSWORD: test
volumes:
  db-data:
    driver: local
  scipy-notebook-data:
    driver: local

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>:8888/?token=jupyter

〇動作確認用コード
import folium

fm = folium.Map(location=[35.856999, 139.648849], zoom_start=10)

folium.Marker(location=[35.861729,139.645482], popup='さいたま市').add_to(fm)
folium.Marker(location=[35.975198, 139.752301], popup='春日部市').add_to(fm)
    
fm


○関連情報
・requestsパッケージに関する他の記事はこちらを参照してください。

・psycopg2に関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿