docker

Docker環境をvscodeでデバックする

こんにちは!

今回は、Docker環境をvscodeでデバックする方法をご紹介したいと思います。

やり方としては、vscodeからDockerにリモート接続をして、デバックをしていきます。

環境がWindowsでもMacでも、やり方は同じになります。

環境

今回の環境

  • vscodeインストール済
  • Dockerインストール済

DockerでPythonの環境構築

例としてpython環境でデバックしていこうと思います。

まずは簡単にDockerでpythonの環境を作ります。

最終的なディレクトリ構成は以下のようになります。

 python/
 ├──.devcontainer/
 │ └── devcontainer.json 
 ├── Dockerfile 
 ├── docker-compose.yml 
 ├── bootstrap 
 └── test.py

Dockerfile

Dockerfileの中身は以下のようにします。

vscodでデバック方法を確認するだけなので、pythonイメージのみにしました。

FROM python:3

docker-compose.yml

docker-compose.ymlは以下のようにしました。

こちらもデバックするだけなので、必要最低限の設定をしています。

version: '3'
services:
  py-debug:
    restart: always
    build: .
    working_dir: '/var/www/python'
    tty: true
    volumes:
      - ./:/var/www/python

devcontainer.json

「.devcontainer」 ディレクトリを新しく作成し、その階層に「devcontainer.json」を作成してください。

「devcontainer.json」の書き方ですが、Dockerfileのみでデバックする方法と、docker-compose.ymlでデバックする方法で、指定の仕方が異なるので、それぞれの方法を解説していきます。

Dockerfileを指定する場合

Docker環境をdockerfileで作る場合は、以下のようになります。

「extensions」を設定してあげると、vscodeからリモートでDocker環境に接続したときに、自動で拡張機能をダウンロードしてくれます。

以下の例の場合、pythonの拡張機能がダウンロードされます。

{
	"name": "vscode debug",
 // Dockerfileのファイルパスを指定
	"dockerFile": "../Dockerfile",
 // リモート先にpythonの拡張機能追加  
	"extensions": [  
		"ms-python.python"
	],
}

docker-compose.ymlを指定する場合

Dockerの環境をdocker-compose.ymlで作る場合は、以下のようになります。

dockerfileの時とは違い、docker-compose.ymlで設定している、service名を指定する必要があります。

今回の場合は、py-debugというservice名を指定しています。

また、workspaceFolderを指定することにより、リモート接続した際、そのフォルダにvscodeが接続しに行きます。

{
	"name": "vscode debug",	
 // docker-compose.ymlのファイルパスを指定
	"dockerComposeFile": "../docker-compose.yml",
 // docker-compose.ymlで指定しているpythonのservice名を指定
	"service": "py-debug",
 // 指定したserviceのworkspaceフォルダを指定              
	"workspaceFolder": "/var/www/python",      
 // リモート先にpythonの拡張機能追加
	"extensions": [  
		"ms-python.python"
	]
}

devcontainer.jsonの書き方に関しては、公式のリファレンスを見ると、詳しく書かれているので、確認してみてください

devcontainer.json reference

vscodeでデバックする

拡張機能「Dev Containers」のインストール

まずは、vscodeで「Dev Containers」という拡張機能をインストールしてください。

vscode拡張機能画像

vscodeからDockerコンテナにリモート接続する

vscodeの左下にあるアイコンをクリックします。

vscodeリモート接続画像

以下のように表示されるので、「Open Folder in Container…」を選択します。

vscodeメニュー画像

そうすると、エクスプローラーが表示されるので、デバック対象のディレクトリを選択すると、以下のようにvscodeで接続できるようになります。

vscodeコンテナ接続先画像

pythonのコードをデバックしてみる

それでは適当にpythonファイルを作って、デバックしていきましょう。

例として「test.py」というpythonファイルを作ってみました。

まずはブレイクポイントを適当な位置で貼ります。

vscodeテスト用コード画像

「F5」を押したら以下のようなメニューが表示されるので、「pythonファイル」を選択します。

vscodeデバックメニュー画像

そうすると、以下のようにブレイクポイントのところで止まってくれました!

vscodeデバック画像

これでデバックが出来るようになります!

-docker
-, , ,