はじめに
開発環境や運用環境を統一するため、Dockerコンテナを使用して環境を構築することが一般的になっているかと思います。この記事ではDockerで構築したPython環境を、VS CodeのDevContainerへ接続してリモートデバッグが実行できる設定について解説します。
GitHubリポジトリ
本記事で解説するソースコードは以下のリポジトリからダウンロードできます。
https://github.com/hdkzkg/vscode-python-docker
ディレクトリ構成
既存のPython環境の構成を下記の通りとします。
project
├── docker
│ └── Dockerfile
├── src
│ └── test.py
├── docker-compose.yml
└── requirements.txt
DevContainerへ接続するために下記の.devcontainer
ディレクトにdevcontainer.json
ファイルを追加します。
project
+├── .devcontainer
+│ └── devcontainer.json
├── docker
│ └── Dockerfile
├── src
│ └── test.py
├── docker-compose.yml
└── requirements.txt
ファイル解説
devcontiner.json
{
"name": "vscode-python-docker",
"dockerComposeFile": "../docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspace",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python"
]
}
}
}
- name:Dev Containerの識別名です。
- dockerComposeFile:Dev Containerを起動する際に使用するdocker-compose.ymlファイルへの相対パスを指定します。
- service:Dev Containerへ接続するコンテナを指定します。docker-compose.ymlのサービス名と一致する必要があります。
- workspaceFolder:Dev Containerのworkspaceを指定します。Dev Container接続後のターミナルのデフォルトディレクトリ、VS Code左側のファイルエクスプローラーのディレクトリになります。
- customizaiotns:Dev ContainerへVS CodeのPython拡張機能をインストールしています。リモートデバッグを使用する場合は、コンテナ側に拡張機能をインストールする必要があります。
Dockerfile
FROM python:3.11
WORKDIR /workspace
COPY requirements.txt ./
RUN pip install -r requirements.txt
Pythonのバージョンは3.11を使用しています。別のバージョンを使いたい方は、別のバージョンを指定してください。
作業ディレクトリに`/workspcae`を指定しています。
Dockerイメージを作成する際に、requirements.txtから必要なライブラリをインストールしています。
docker-compose.yml
version: '3.8'
services:
app:
container_name: vscode-python-docker
build:
context: .
dockerfile: docker/Dockerfile
volumes:
- ./:/workspace
tty: true
先程解説したDockerfileからコンテナを起動しています。
requirements.txt
requests
テスト用にrequests
のみをインストールするようにしています。
複数のライブラリをインストールする場合は、改行して記入していください。
requests==2.26.0
のようにバージョンを指定することも可能です。
動作確認
コンテナ起動
Ctrl + Shift + p
でコマンドパレットを開き、Dev Containers: Reopen in Container
を選択し、DevContainerを起動します。
インテリセンスや実行(デバッグ)ボタンが使用できることが確認できます。

ライブラリのインストール
ターミナルを開き、下記のコマンドを実行します。
pip list
requirements.txtに記載したrequests
モジュールがインストールされれていることが確認できます。
Package Version
------------------ --------
certifi 2024.7.4
charset-normalizer 3.3.2
idna 3.7
pip 24.0
requests 2.32.3
setuptools 65.5.1
urllib3 2.2.2
wheel 0.43.0
test.py
import requests
respose = requests.get('https://jsonplaceholder.typicode.com/users')
for data in respose.json():
print(data.get('name'))
テスト用のjsonを返す無料のAPI(JSONPlaceholder)を使用しています。実行するとデータ取得できることが確認できました。

まとめ
既存のPythoのDocker環境をVS CodeのDevContainerに接続してリモートデバッグできる設定方法について解説しました。
サンプルプロジェクトは簡単な構成でしたが、devcontainer.json
ファイルを作成するだけで、VS CodeのDevContainerに接続でき、リモートデバッグが可能になります。VS Codeで開発を行う場合は、リモートデバッグの設定をして、開発効率を上げていきたいと思います。
簡単なPythonプログラムを実行したい時など、Dockerfileやdocker-compose.ymlを使わずに、もっと簡単にPythonが実行できる環境を構築したい方はこちらの記事(VS CodeのDevContainerでDockerfileを使わずにPythonの開発環境を簡単に構築する)を参考にしてください。
コメント