当サイトは、アフィリエイト広告を利用しています

【Docker × Python】VSCodeでPythonのコンテナ開発環境を作る

作成日:2023月09月19日
更新日:2024年02月08日

Pythonを使って開発をすることになったため Dockerを使ったPythonのコンテナ開発環境を
VSCodeで簡単に作る方法をメモしておく。

Pythonでプログラミングを開始する時

  • python.org
  • Anaconda
  • Miniconda
  • Microsoft Store
  • winget

のような多くのPythonディストリビューションがあり
用途によって使い分ける必要があるが
今回は公式のpython.orgを使うことにする

Anacondaを使った環境構築については下記でまとめています

またPythonのWEBフレームワーク(django,fastapi)を使う場合の方法は下記記事で
紹介しています

環境

今回はwindowsで実施する

  • Windows10
  • Docker for Windows

前提

下記がインストール済みであること

Docker for Windows

WindowsでDockerを扱うために
「Docker for Windows」
をインストールしておく

WindowsにDocker for Windowsをインストールする方法は
下記で紹介しています

VScode

VSCodeからdockerコンテナ開発環境を作成するため
VScode本体と下記の拡張機能をインストールしておく

Remote Development 2023-09-17-18-43-05

※正確にはRemote Developmentに含まれている
「DevContainers」を使う

構成

プロジェクト構成は以下のようにする

プロジェクト構成
.
|-- .devcontainer
| `-- devcontainer.json
|-- Dockerfile
|-- main.py
|-- docker-compose.yml
`-- requirements.txt

各ファイルの詳細について後で説明する

DevContainersで使うファイル

VScodeの拡張機能DevContainersを使って
VSCodeからdockerコンテナ開発環境を作成するための
各ファイルを解説する

下記の各種ファイルを設定する

docker-compose.yml

コンテナ管理の設定ファイル

docker-compose.yml
version: "3"
services:
python3:
container_name: "container_python3"
# Dockerfileをビルド
build:
context: .
dockerfile: Dockerfile
tty: true
# プロジェクトをバインドマウント
volumes:
- .:/workspace
ports:
- "1000:8888"

build

contextで指定したパス配下のdockerfileを
buildする

volumes

「ホスト側の相対Path:コンテナの絶対Path」で設定し
ホストとコンテナのvolumeをバインドさせる

ここではプロジェクトとworkspaceをバインドさせる
ボリュームにバインドさせることデータは永続化され
仮にコンテナを誤って消してもデータは消えない

Dockerfile

Dockerコンテナイメージを構築するためのテキストファイル
これを元にimageが作られる

Dockerfile
# イメージ
FROM python:3
# パッケージを最新化
RUN python -m pip install --upgrade pip
# workspaceディレクトリを作成
WORKDIR /workspace
# workspaceにrequirements.txtをコピー
COPY requirements.txt /workspace/
# requirements.txtのパッケージをインストール
RUN pip install -r requirements.txt
# upyter NotebookのLabインターフェースを有効にするための設定
ENV JUPYTER_ENABLE_LAB = yes

requirements.txt

requirements.txt
jupyterlab

JupyterNotebookを使用できるようにする

devcontainer.json

VScodeのコンテナ開発の設定ファイル
を設定する

devcontainer.json
{
// コンテナ名
"name": "container_python3",
"dockerComposeFile": "../docker-compose.yml",
"service": "python3",
// コンテナ内のプロジェクトのルートフォルダを指定
"workspaceFolder": "/workspace",
"shutdownAction": "stopCompose",
"extensions": [
"ms-python.python",
"ms-toolsai.jupyter"
]
}

devcontainerの詳しい使い方については下記記事で
まとめています

Dockerコンテナを作る

各設定ファイルの準備ができたら
VSCodeからDockerコンテナを作成する

実行前に「Docker for Windows」を起動させておく
※実行してないとVSCodeから起動時に注意されます。。。

F1でコマンドパレットを開き、「コンテナで再度、開く」を選択

2023-09-17-20-58-59

エラーなく実行できればコンテナ開発環境。

main.pyを実行する

試しにmain.pyを実行してみる

main.py
print("hello python")

実行前にPythonのversionを確認する。
※インタープリンター設定時に使う

Dockerfileでマイナーバージョン以下を指定をしないと
コンテナimageをbuildした時点での最新のpython stable versionが
installされているため

Python
python --version
Python 3.11.5

インタープリンターを選択する

Pythonを実行するためのインタープリンターを選択する
確認したPythonのversion選択する 2023-09-17-21-08-04

VScodeで実行する

画面右上のボタンで実行できる 2023-09-17-21-09-51

コマンドで実行する

またはpythonコマンドで実行することもできる

main.py
python main.py
hello python

JupyterNotebookを実行する

JupyterNotebookを実行するための
パッケージや拡張機能もインストールしてあるので
コンテナで動作することを確認する

ipynbファイルを適当に作って開く 2023-09-17-21-19-55

インタープリンターを選択する 2023-09-17-21-20-10

実行する 2023-09-17-21-20-35

まとめ

Dockerコンテナを使ったPython実行環境の構築を
VScodeを使ってしてみた

Dockerコンテナを使うと面倒なインストールは
ファイルを書くだけで簡単にでき
また、いらなくなったらコンテナを消せば
PC本体の環境を汚れないので、便利だと思う。

Pythonを使った機械学習入門については下記記事でまとめています

参考

関連記事

新着記事

タグ別一覧
top