Visual Studio Code で Docker コンテナに Attach して Python のデバッガ起動までしてみる
久々にブログを書くのでリハビリ感で軽い記事を書いてみます。
ローカル開発環境で、Docker 上の Python Interpreter を使って Python の実行や Lint、デバッグまでしたいけど、PyCharmがいいのか Visual Studio Code (VSCode) がいいのか、みたいな話が出てて、とりあえず VSCode でやってみたのでログ。
割とサクッと Docker - Python 開発環境が構築できました。
環境
- macOS Mojave
- Docker Desktop 2.1.0.3
- Visual Studio Code 1.44.2
- Python 拡張インストール済み
- Docker Image: python:3.8
セットアップ
1. VSCode に Remote Development 拡張をインストールする
Remote - WSL が不要なので、これをインストールするべきか否かわかりませんが、とりあえずこれを入れとけ感あるので入れます。
2. Python コンテナを走らせる
適当に docker run --rm -it python:3.8 /bin/bash
とします。
3. Attach する
以下の画面のようにして、Python コンテナに Attach します。
すると画面が変わります。これでもうコンテナに Attach して、VSCode からシェル操作できたりファイル操作できたり。驚くほどさっくり。
ちなみに、コンテナ上には VSCode のリモートサーバー関連のファイルとプロセスが生まれているようです。
4. コンテナ上に Python 拡張をインストールする
コンテナに Attach している方の VSCode のウィンドウの拡張機能タブで Python を探し、Install on Container をすると以下のようになります。
5. Linter をインストールする
雑にスクリプトを書いて、保存します。すると Linter をインストールするか聞かれるのでインストールします。
適当にタイポしてみると...
ちゃんと怒られました。
6. デバッガを使用する
雑にブレークポイントを貼って...
できてそうですね。
まとめ
VSCode - Docker - Python でググると、何やらめんどくさそうな雰囲気が漂っていたのですが、実際にやってみると簡単に走っているコンテナに Attach でき、コーディングも Lint もデバッグもサクッとできました。
あとは、Docker Image を開発用のものにしたり、設定ファイルを作り込んだりすれば頼もしい開発ツールになるのではないでしょうか。
個人的には Docker ベースでシステムを開発するなら断然こっちを使っていきたいと感じました。
コンテナ単位で Python 環境を区切れるのも嬉しいですね。
ちなみに、python:3.6-alpine でも Attach して Python 実行までできましたが、Linter は gcc が入ってないためインストールできませんでした。
その辺は何事も使い分けかもしれませんね。
以上です。