Jupyter Notebook から DB へアクセスできるように、三つのコンテナ(Jupyter Notebook / PostgreSQL / pgAdmin)を同時に起動できる環境を構築します。
準備
プロジェクト用ディレクトリと各種ファイルを作成します。
$ mkdir my-anaconda && cd my-anaconda
$ touch Dockerfile docker-compose.yml
Dockerfile
FROM continuumio/anaconda3:latest
RUN useradd -d /home/[ユーザー名] -m -s /bin/bash [ユーザー名]
WORKDIR /home/[ユーザー名]/my-anaconda
RUN /opt/conda/bin/conda install jupyter -y --quiet
RUN pip install psycopg2-binary
docker-compose.yml
version: '3'
services:
db:
image: postgres:10.4
container_name: postgres-my-anaconda
volumes:
- db-data:/var/lib/postgresql/data
ports:
- "5432:5432"
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin-my-anaconda
volumes:
- ./pgadmin:/var/lib/pgadmin
ports:
- "8000:80"
depends_on:
- db
environment:
PGADMIN_DEFAULT_EMAIL: postgres
PGADMIN_DEFAULT_PASSWORD: postgres
anaconda:
build: .
container_name: my-anaconda
volumes:
- .:/home/[ユーザー名]/my-anaconda
ports:
- "8080:8888"
depends_on:
- db
tty: true
command: >
jupyter notebook
--notebook-dir=/home/[ユーザー名]/my-anaconda
--ip='0.0.0.0'
--no-browser
--allow-root
--NotebookApp.token='jupyter'
volumes:
db-data:
サービスのビルドとコンテナの作成
サービスをビルドします。
$ docker-compose build
コンテナを作成します。
$ docker-compose up -d
ブラウザからアクセスする
Jupyter Notebook
http://localhost:8080 にアクセスします。「Password or token」に「jupyter」と入力すれば Jupyter Notebook が表示されます。
pgAdmin
http://localhost:8000 にアクセスします。ログイン情報は、Email Address / Password ともに「postgres」です。
サービスの開始と停止
サービスを停止するには以下を実行します。
docker-compose stop
再度サービスを開始して Jupyter Notebook を使う場合は以下を実行します。
docker-compose start