Docker で Python 環境構築を 10 分で整える
初心者エンジニアにとって環境構築が最初にして最大の難関です(私はそうでした...)
そこでDockerを利用することで、環境構築をつまづきポイントを少なくできます
今回は Docker(Docker Compose)を利用することで Python の環境構築を紹介します
- この記事を読んで分かること
- 前提条件
- Docker, DockerCompose をインストールする
- 設定ファイルを記述する
- Python を Docker コンテナ上で実行する
- Docker コンテナ上の Jupyter Notebook にブラウザにアクセスする
- まとめ
この記事を読んで分かること
- Docker Compose を使うことで Python の実行環境を用意できる
- ブラウザから Jupyter Notebook を実行できる
前提条件
今回は Python を Docker コンテナ上で動作可能にすることにフォーカスします
Python, Docker の細かい説明には焦点を当てないのでご注意を m(__)m
動作環境は以下の通りです
Docker, DockerCompose をインストールする
※今回は Mac を前提としているため Docker for Mac をインストールします
Docker ドキュメントを日本語翻訳して頂いているサイトに記載があります
(英語を読むのに抵抗がない方は本家ドキュメントを参照してください)
- Docker Hubから Docker Desktop for Mac をダウンロードします
- インストール方法に従ってインストールすると Docker だけでなく、Docker Compose も一緒にインストールされます
設定ファイルを記述する
Docker を使う時に、毎回長々とオプションをつけるよりも
設定を YAML 形式で記述するDocker Composeを利用する方がとっつきやすいと思っています
(ssh する時に config 書いておいた方が早くアクセスできるみたいな...?)
最終的なディレクトリ構成は以下の通りです
docker_python ├── .docker │ ├── Dockerfile │ └── requirements.txt ├── docker-compose.yml └── sample.py
- docker-compose.yml
- Docker Compose の設定ファイル(YAML 形式)
- Docker のコンテナの設定を記述します
version: "3.7" services: app: build: .docker volumes: - ./:/app working_dir: /app tty: true ports: - "8890:8890"
- .docker/Dockerfile
- Docker イメージの設計図のようなもの
requirements.txt
に設定したパッケージ群をインストールした Python の実行環境を用意します
FROM python:3.8 WORKDIR /init COPY requirements.txt /init RUN pip3 install -r /init/requirements.txt
- .docker/requirements.txt
- Python にインストールするパッケージ群を記述します
- ※今回はデータ分析でよく使われるパッケージを設定しましたが適宜変更可能です
numpy pandas jupyter
sample.py
- ここでは Python の実行確認をするためだけなので、シンプルにしておきます
- 実行完了後は
sample.csv
を出力します
import numpy as np import pandas as pd data = pd.Series(np.arange(10)) data.to_csv('./sample.csv')
Python を Docker コンテナ上で実行する
Docker Compose の起動
- docker-compose.yml で設定した Docker コンテナを起動します
docker-compose up -d
docker-compose exec app python sample.py
ここまでで Python の実行環境の構築は完了ですが、Python でデータ分析をする際は
Jupyter Notebook 等を利用することが多いため、その方法についても紹介します
Docker コンテナ上の Jupyter Notebook にブラウザにアクセスする
- Docker コンテナ上で bash を起動する
docker-compose exec app bash
Jupyter Notebook を起動する
--allow-root
,--ip=0.0.0.0
Docker コンテナ上で Jupyter Notebook を起動するために必要な設定です--port
docker-compose.yml で設定している(コンテナ側の)ポート番号と合わせる必要があります--NotebookApp.token=''
つけなくても問題ありませんが、その場合は実行時に発行される URL をブラウザに入力する必要があります
jupyter notebook --allow-root --ip=0.0.0.0 --port=8890 --NotebookApp.token=''
ブラウザから Jupyter Notebook を開く
- Google Chrome などのブラウザから
localhost:8890
にアクセスすれば OK
- Google Chrome などのブラウザから
まとめ
Docker Compose を利用することで Python の実行環境を用意する方法を紹介しました
つまづきがちな環境構築も Docker をインストールしていれば比較的スムーズになると思います