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のコンテナへリモートデバッグを行います。
任意のフォルダを作成します。
ファイル構成は以下です。
Pythonファイルは何でも良いですが、前回の記事を参考にしてください。
├ download.py
├ analysis1.py
├ analysis2.py
└ .devcontainer/
├ devcontainer.json
└ Dockerfile
└ .vscode
└ launch.json
devcontainer.jsonの中身を以下のようにしました。
Dockerfileで作成ということと、拡張機能のインストールを記述します。
1 2 3 4 5 6 7 |
{ "name": "Python Sample", "dockerFile": "Dockerfile", "extensions": [ "ms-python.python" ] } |
Dockerfileを定義します。
自分で作成したスクレイピング用のイメージを使用しました。
今回はコンテナ上でデバッグするので、pylintもインストールします。
1 2 3 4 |
FROM chigusaweb/python-scraping # Install pylint RUN pip install pylint |
launch.jsonを以下のようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "version": "0.2.0", "configurations": [ { "name": "Python: Scraping", "type": "python", "request": "launch", "program": "${file}", "console": "internalConsole" } ] } |
VS Codeの準備
VS Codeの左下の緑のアイコンをクリックします。
Remote-Containers: Open Folder in Container…を選択します。
その後、先程作成したフォルダを選択します。
プロジェクトにはDockerの設定も含まれているため、初回起動時にはコンテナが自動で作成されます。
以下のようにVS Codeが表示されました。
Pythonデバッグ
前回スクレイピングで作成したPythonファイルを開きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import os from urllib.request import urlretrieve print("ダウンロード開始") # HTMLファイル 保存先のディレクトリ save_dir = os.path.dirname(os.path.abspath(__file__)) + "/html/" # 存在しなければディレクトリ作成 if not os.path.exists(save_dir): os.mkdir(save_dir) # htmlをダウンロードするURL # ここでは千草ウェブのトップページ download_url = "https://chigusa-web.com/" # 保存先 save_file = save_dir + "/chigusa.html" # ダウンロード urlretrieve(download_url, save_file) print("ダウンロード完了") |
ライブラリにマウスオーバーしてみると、Dockerコンテナ上のPython環境のライブラリのドキュメントが表示されています。
当然ながらVS Codeを実行しているWindowsにはPython環境は入っていません。
F5を押してデバッグしてみます。
きちんとブレークポイントで止まりますし、os.pathの値がDocker上のパスであることが確認できます。
きちんと前回の記事と同じく、実行ができました。
さいごに
VS Codeのリモート開発は素晴らしいですね!
ただ現状、やや不安定なイメージがありました。
(エラーが発生したり、上手く構築できなかったりなど・・)
まだ正式版ではありませんが、今後に期待です🙂
シンプルで高機能なクリップボード履歴フリーソフト「Clibor」
Cliborはフリーソフトです。
普段よく文字を入力する方や、ブラウザに決まったキーワードを張り付ける方など、テキストの入力がとても便利になりますので是非ご利用ください!