VS CodeでDockerのPython環境でリモート開発

VS CodeでDockerのPython環境でリモート開発

はじめに

みなさんプログラミングの際にVS Codeを使っていますでしょうか。
私はよく使っています!

とても軽量ですし、必要最低限の機能はもちろん、ソースの管理や、デバッグ、強力な拡張機能など、非常に気にっております。

まだ正式版の機能ではありませんが、VS Codeがリモート開発に対応したということで試してみました。

Dockerを使いPython環境を用意し、VS Codeでリモートデバッグを行いないます
これができると、わざわざローカルに実行環境(例えばAnaconda等)を用意しなくても、リモート先で直接開発ができるためとても便利ですね!

環境

  • Windows10
  • Visual Studio Code Insiders(1.35.0-insider)
  • Docker – Python

参考

ちなみにPHPをリモート開発はQiitaに記事を投稿しました。

VS Codeインストール

今のところ本機能(リモート開発)は正式版ではないので、Insidersビルドをダウンロードします。

私は「.zip」の64bit版をダウンロードしました。

起動と拡張機能のインストール

zipファイル解凍後、「Code – Insiders.exe」をダブルクリックし起動します。

以下の拡張機能をインストールします。

VS Code上から拡張機能を検索し、「Remote Development」をインストールします。

Dockerの用意

今回はWindowsを使用しており、WindowsにDockerをインストールしました。
インストール後、Dockerの共有フォルダの設定も行います。
以前書いた記事を参考にしてください。

Pythonプロジェクトの用意

前回スクレイピングの記事をまとめました。
この環境をVS CodeからDockerのコンテナへリモートデバッグを行います。

任意のフォルダを作成します。

vscode-remote-scraping-python

ファイル構成は以下です。
Pythonファイルは何でも良いですが、前回の記事を参考にしてください。

/
├ download.py
├ analysis1.py
├ analysis2.py
└ .devcontainer/
  ├ devcontainer.json
  └ Dockerfile
└ .vscode
  └ launch.json

devcontainer.jsonの中身を以下のようにしました。
Dockerfileで作成ということと、拡張機能のインストールを記述します。

Dockerfileを定義します。
自分で作成したスクレイピング用のイメージを使用しました。
今回はコンテナ上でデバッグするので、pylintもインストールします。

launch.jsonを以下のようにしました。

VS Codeの準備

VS Codeの左下の緑のアイコンをクリックします。

Remote-Containers: Open Folder in Container…を選択します。

その後、先程作成したフォルダを選択します。
プロジェクトにはDockerの設定も含まれているため、初回起動時にはコンテナが自動で作成されます。

以下のようにVS Codeが表示されました。

Pythonデバッグ

前回スクレイピングで作成したPythonファイルを開きます。

ライブラリにマウスオーバーしてみると、Dockerコンテナ上のPython環境のライブラリのドキュメントが表示されています。
当然ながらVS Codeを実行しているWindowsにはPython環境は入っていません。

F5を押してデバッグしてみます。
きちんとブレークポイントで止まりますし、os.pathの値がDocker上のパスであることが確認できます。

/workspaces/vscode-remote-scraping-python/

きちんと前回の記事と同じく、実行ができました。

さいごに

VS Codeのリモート開発は素晴らしいですね!
ただ現状、やや不安定なイメージがありました。
(エラーが発生したり、上手く構築できなかったりなど・・)
まだ正式版ではありませんが、今後に期待です🙂

お気軽にフォローください!

シンプルで高機能なクリップボード履歴フリーソフト「Clibor」

シンプルで高機能なクリップボード履歴ソフトです。
Cliborはフリーソフトです。

普段よく文字を入力する方や、ブラウザに決まったキーワードを張り付ける方など、テキストの入力がとても便利になりますので是非ご利用ください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)