DockerでPython開発環境をサクッと作る方法

IT・プログラミング

この記事ではDockerでPython環境を作成し、その環境にVSCodeからアクセスする方法を紹介します。
似たような方法としてDevContainerを使うやり方もありますが、こちらは以下で解説しています。

個人的にはDevcontainerは起動が遅いことがあるので、こちらの方法も好きです。

概要

  • DockerでPython開発環境をサクッと構築
  • ホストのフォルダをマウントして開発可能
  • VSCodeからJupyter Notebookを利用
  • VSCodeの「Dev Containers」で 既存のコンテナに接続

準備

DockerやDevcontainerが使える前提です。
詳しいインストール方法などは以下の記事で紹介しています。

Dockerfile を用意する

# Dockerfile
FROM python:3.12

WORKDIR /app

# 必要なパッケージのインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Jupyter関連のインストール
RUN pip install jupyterlab ipykernel

# 起動時はbashシェルを起動(Jupyterは手動で)
CMD ["bash"]

docker-compose.yml を作成

# docker-compose.yml
version: '3.8'

services:
  python-dev:
    build: .
    volumes:
      - .:/app
    ports:
      - "8888:8888"  # Jupyter用ポート
    stdin_open: true
    tty: true

requirements.txt の例(最低限)

numpy
pandas
matplotlib

コンテナを起動

VSCodeなどで以下コマンドを入力してコンテナを起動します。

docker-compose up --build

Jupyter Notebook を起動(任意)

Jupyterを立ち上げてブラウザでアクセスしたい場合は以下コマンドになります。

jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root --no-browser

http://localhost:8888/?token=xxx... にアクセスすればJupyterが使えます。

VSCodeから「既存のコンテナに接続」する方法(Attach)

前提:VSCodeに必要な拡張機能をインストール

拡張機能がインストールされていない場合は拡張機能をインストールしてください。
Dev Containers
– Python
– Jupyter

接続方法:

  1. VSCode左下の青のアイコン(Remoteのマーク)をクリック
  2. Attach to Running Container... を選択
  3. python-dev(または quantechia-python-dev-1 など)を選択
  4. 自動でそのコンテナ内にVSCodeが接続される
  5. コンテナの /app フォルダがエディタ上で開くようになる(開かない場合は、OpenFolderでappを選択)

.ipynb ファイルを開くと、VSCodeのJupyter拡張機能が自動でカーネルを検出します!

よくあるトラブル

| 症状 | 対策 |
|
| コンテナがすぐ終了する | stdin_open: true, tty: truedocker-compose.yml に追加 |
| Jupyterにアクセスできない | ポート 8888:8888 が通ってるか確認 |
| VSCodeからコンテナに接続できない | docker ps でコンテナが起動中か確認 |

まとめ

| 機能 | 内容 |
|
| Dockerfile | Python + Jupyter 開発環境構築 |
| docker-compose | マウントとポート開放で柔軟に構成 |
| Jupyter | コンテナ上で起動、ブラウザでアクセス |
| VSCode連携 | Dev Containers で既存コンテナに接続可能 |

タイトルとURLをコピーしました