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

【Docker × Python】コンテナ環境のDjangoをVSCodeでデバッグする方法

作成日:2023月11月03日
更新日:2024年06月23日

Dockerコンテナを使ってPythonのWEBフレームワークである
Djangoの開発環境を構築した場合のVScodeを使った
デバッグ方法をメモしておく

DockerコンテナでのDjango開発環境の構築方法については
下記記事で紹介している

当記事はDockerコンテナでのDjango開発環境は
できている前提でまとめる。
※というか上記記事のプロジェクトを使います

Djangoコンテナを起動する

VScodeから拡張機能のDevcontainerを使って
コンテナを起動する

docker-comopseファイルは下記のようにする

docker-compose.yml
version: "3"
services:
# サーバー
django:
container_name: "django"
# Dockerfileをビルド
build:
context: .
dockerfile: Dockerfile
tty: true
# プロジェクトをバインドマウント
volumes:
- ../:/workspace
ports:
- 8000:8000
# クライアント
client:
container_name: "client"
image: python:3.10
tty: true

VScodeからの起動はDevcontainerがインストール
されていればF1でコマンドパレットを開いて、「コンテナを再度、開く」 で起動できる

2023-11-04-01-46-29

VScodeでデバッグ設定をする

コンテナが起動できたら、
VScodeでデバッグするためのlanch.jsonファイル
を作成する

lanch.jsonファイルを作成する

まずはdjangoプロジェクトのmanage.pyファイルがある
パスをメモしておく。

パス
root@edc3685f95b6:/workspace/dockerdjango# ls
db.sqlite3 djangoapp dockerdjango manage.py
root@edc3685f95b6:/workspace/dockerdjango# pwd
/workspace/dockerdjango

「実行とデバッグ」を開く

2023-11-04-01-49-38 まだ一つもlanch.jsonファイルを作成していない
状態。

「lanch.jsonファイルを作成します」を選択

2023-11-04-01-55-11

「Python」を選択

2023-11-04-01-55-49 下記のVScodeの拡張機能の「Python」をインストールしていないと
表示されないので注意 2023-11-04-01-56-29

「Django」を選択

2023-11-04-01-56-52

「Django」を選択するとmanage.pyのパスを
聞かれるのでメモしておいたパスを入れる 2024-06-23-22-56-14 ここで間違えても後、修正できるので
一旦、適当にいれてもいい

lanch.jsonファイルが作成される

上記までを実行するとlanch.jsonファイルが
作成される

lanch.json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/dockerdjango/manage.py",
"args": [
"runserver"
],
"django": true,
"justMyCode": true
}
]
}

ただコンテナ上でDjangoサーバーを起動するのでこのままだと
デバッグできない。

試しに上記のlanch.jsonで起動してアクセスしてみる
起動は左上のボタンを押すと起動する 2023-11-04-02-15-27

見るとhttp://127.0.0.1:8000/でサーバーが起動されている

Dockerのコンテナは、コンテナがそれぞれ独立した環境を持っているため
デフォルトではホストOSからアクセスできない状態になっている

そしてDjangoサーバーがデフォルトで待ち受けるIPアドレスが
127.0.0.1(localhost)
のためIP、ポート番号なしで起動してもホストからはアクセスできない。

実際にアクセスしてみても
2023-11-04-02-19-21 となり表示できていない

lanch.jsonファイルを修正する

デバッグ起動時に

  • IPアドレスを0.0.0.0(すべてのIPアドレス)に設定
  • ポート番号を8000に設定(docker-compose.ymlでポートマッピングした値)

を指定して起動することでホストからアクセス可能になるので
そのように編集する

lanch.json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/dockerdjango/manage.py",
"args": [
"runserver",
"0.0.0.0:8000"
],
"django": true,
"justMyCode": true
}
]
}

これでVScodeのDjangoのデバッグ設定は完了

VScodeでデバッグ設定をする

ブレークポイントを打ってホストのブラウザから
実行してみる

2023-11-04-02-27-29

ブラウザからアクセスすると
ブレークポイントで止まることが確認できた
2023-11-04-02-29-38

まとめ

コンテナ環境上のDjangoサーバーのデバッグ方法を
まとめてみた。

Dockerコンテナは便利だが、コンテナ上でサーバーを
実行する場合はホストで実行するのと少し設定を変える必要がある
点に気づけたので、勉強になった。

参考

新着記事

タグ別一覧
top