この記事では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
接続方法:
- VSCode左下の青のアイコン(Remoteのマーク)をクリック
Attach to Running Container...
を選択
python-dev
(またはquantechia-python-dev-1
など)を選択- 自動でそのコンテナ内にVSCodeが接続される
- コンテナの
/app
フォルダがエディタ上で開くようになる(開かない場合は、OpenFolderでappを選択)
.ipynb
ファイルを開くと、VSCodeのJupyter拡張機能が自動でカーネルを検出します!
よくあるトラブル
| 症状 | 対策 |
|
| コンテナがすぐ終了する | stdin_open: true
, tty: true
を docker-compose.yml
に追加 |
| Jupyterにアクセスできない | ポート 8888:8888
が通ってるか確認 |
| VSCodeからコンテナに接続できない | docker ps
でコンテナが起動中か確認 |
まとめ
| 機能 | 内容 |
|
| Dockerfile | Python + Jupyter 開発環境構築 |
| docker-compose | マウントとポート開放で柔軟に構成 |
| Jupyter | コンテナ上で起動、ブラウザでアクセス |
| VSCode連携 | Dev Containers
で既存コンテナに接続可能 |