目標
DockerとVSCodeで超簡単にPythonの開発環境を作成してみる。
どんな人向け??
- Dockerが好きな人
- VSCodeが好きで好きでたまらない人
- Pythonの環境構築を楽にやってみたい人
どこまでやるのか
- docker-composeでコンテナを立ち上げる
- 立ち上げたコンテナ内にVSCodeのプラグイン
Remote - Containers
で接続 - コンテナ内でpythonのスクリプトを実行しておしまい
ファイル構成
.
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── src
├── hello.py
└── student
├── student-mat.csv
├── student-merge.R
├── student-por.csv
└── student.txt
各種ファイル
Dockerfile
とdocker-compose.yml
は以下のようにしています。
詳しくは、Dockerを使って機械学習の環境を作ろうとした話に書いているので参考にしてください。
FROM python:3.7.4
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& pip install --upgrade pip
COPY . ${pwd}/
RUN pip install -r requirements.txt
version: "3"
services:
app:
container_name: "python_sample"
build:
context: .
dockerfile: ./Dockerfile
ports:
- 80:80
tty: true
volumes:
- $PWD/src:/var/src
requirements.txt
は機械学習で使いそうなライブラリを適当にピックアップしてます。
今回は、pandasとmatplotlibを使用してcsv(src/student/student-mat.csv
)を読み込んで
データのグラフを保存することにします。
numpy
scipy
pandas
matplotlib
seaborn
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
# csvの読み込み
sample_data_set = pd.read_csv('student/student-mat.csv', sep=';')
# グラフ化してみる
plt.hist(sample_data_set['age'], bins=[15,16,17,18,19,20,21,22])
# 縦軸と横軸に名前を
plt.xlabel('age')
plt.ylabel('count')
plt.savefig('tmp.png')
コンテナ立ち上げ
ファイルが準備できたら、コンテナを立ち上げましょう
※ 初回のコンテナ立ち上げ時には、少し時間かかります。
$ docker-compose up -d
Creating network "python_sample_default" with the default driver
Creating python_sample ... done
コンテナに接続
コンテナが立ち上がったので以下のコマンドで接続っと....
$ docker exec -it ee4cf2 /bin/sh -c "[ -e /bin/bash ] && /bin/bash || /bin/sh"
このコマンド。。。打つのも眺めるのも嫌じゃないですか???
やってることは分かるけど、コンテナの中でもVSCode使いたいな〜使いたいなぁ〜。。。。
そこで!!!
実際に動かしてみましょう。
プラグインをインストールしたら
下記の画像の1
の部分をクリックしましょう
2
のRemote-Container:Attach to Running Container...
を選択します
そして、コンテナ名が表示されるので自分の接続したいコンテナを選択します

接続が完了すると、下記の画像のよう現在接続しているコンテナの情報が1
に表示されます
2
でコンテナ内のフォルダを開きます
3
でコンテナ内のフォルダ構成が追えるので、対象のフォルダを探して開きましょう

フォルダが開き終わったら、VSCodeのTerminalを開いてPythonのスクリプトを実行です!
(TerminalはDockerコンテナで開いた扱いになってるので、そのまま実行できます)

まとめ
DockerとVSCodeでとても簡単に開発環境が構築できました。
後半は少し駆け足気味だったかも。。
ホスト環境を汚さずに、自分の好きなエディタで開発できるのは、とても楽しいことだと思います。
他にも、golangとかもimageを取得してコンテナ立ち上げれば同じように直ぐに環境が手に入ります。
ではでは、お読みいただきありがとうございました!!
質問や訂正などがありましたら、よろしくお願いします。。