当サイトは、アフィリエイト広告を利用しています
Dockerコンテナを使ってPythonのWEBフレームワークである
Djangoの開発環境を構築した場合のVScodeを使った
デバッグ方法をメモしておく
DockerコンテナでのDjango開発環境の構築方法については
下記記事で紹介している
当記事はDockerコンテナでのDjango開発環境は
できている前提でまとめる。
※というか上記記事のプロジェクトを使います
VScodeから拡張機能のDevcontainerを使って
コンテナを起動する
docker-comopseファイルは下記のようにする
version: "3"services:# サーバーdjango:container_name: "django"# Dockerfileをビルドbuild:context: .dockerfile: Dockerfiletty: true# プロジェクトをバインドマウントvolumes:- ../:/workspaceports:- 8000:8000# クライアントclient:container_name: "client"image: python:3.10tty: true
VScodeからの起動はDevcontainerがインストール
されていればF1でコマンドパレットを開いて、「コンテナを再度、開く」
で起動できる
コンテナが起動できたら、
VScodeでデバッグするためのlanch.jsonファイル
を作成する
まずはdjangoプロジェクトのmanage.pyファイルがある
パスをメモしておく。
root@edc3685f95b6:/workspace/dockerdjango# lsdb.sqlite3 djangoapp dockerdjango manage.pyroot@edc3685f95b6:/workspace/dockerdjango# pwd/workspace/dockerdjango
まだ一つもlanch.jsonファイルを作成していない
状態。
下記のVScodeの拡張機能の「Python」をインストールしていないと
表示されないので注意
「Django」を選択するとmanage.pyのパスを
聞かれるのでメモしておいたパスを入れる
ここで間違えても後、修正できるので
一旦、適当にいれてもいい
上記までを実行すると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で起動してアクセスしてみる
起動は左上のボタンを押すと起動する
見るとhttp://127.0.0.1:8000/でサーバーが起動されている
Dockerのコンテナは、コンテナがそれぞれ独立した環境を持っているため
デフォルトではホストOSからアクセスできない状態になっている
そしてDjangoサーバーがデフォルトで待ち受けるIPアドレスが
127.0.0.1(localhost)
のためIP、ポート番号なしで起動してもホストからはアクセスできない。
デバッグ起動時に
を指定して起動することでホストからアクセス可能になるので
そのように編集する
{// 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のデバッグ設定は完了
ブレークポイントを打ってホストのブラウザから
実行してみる
ブラウザからアクセスすると
ブレークポイントで止まることが確認できた
コンテナ環境上のDjangoサーバーのデバッグ方法を
まとめてみた。
Dockerコンテナは便利だが、コンテナ上でサーバーを
実行する場合はホストで実行するのと少し設定を変える必要がある
点に気づけたので、勉強になった。