こんにちは、2021年もあっというまに年の瀬、師走真っ只中ですね。
今回はPython開発環境構築のお話です。
以前Windowsで最強のPython開発環境をご紹介しました。
この環境を用いれば、
- 1つの端末で複数のプロジェクトを独立した開発環境で開発できるようにする
- 面倒な環境構築を手順化し、チームメンバーに共有できるようになる
といったメリットを得られます。
だがしかし!もっと開発環境を簡略化したくはないですか?
今回の目標はこちら!
もうすぐ2022年、よりモダンな開発環境でPythonライフをエンジョイしましょう!
本記事はWindows10で検証しています。
初期環境構築
今回はVSCodeとDockerを自分のPCにインストールする必要があります。
Docker Windowsインストール
以下に従いインストールします。 docs.docker.jp
Docker Desktopは起動した状態にしておきましょう。
VSCodeをインストール
以下に従いインストールします。 azure.microsoft.com
VSCode 拡張機能「Remote Development」のインストール
VSCodeの拡張機能の画面下から下記拡張機能をインストールしましょう。 marketplace.visualstudio.com
「Remote Development」とは、WSL、リモートマシン、コンテナなどの環境をVSCodeで操作して、開発ができるようになる拡張機能です。
「Remote - Containers」などの各環境ごとの拡張機能を一纏めにダウンロードできるのが、「Remote Development」になります。
今回は、「Remote - Containers」を使って見ます。「Remote - Containers」は、コンテナの中に入って、VSCode上ではコンテナの実行環境内でプログラムを書いたり、デバッグ、テストすることができます。
「Remote - Containers」の設定ファイルは、.devcontainer/devcontainer.json
、コンテナはDockerfile
などで管理できるため、GitHubなどで他のチームメンバーへの環境の共有も容易にできます。
Remote DevelopmentでDockerでの開発環境を構築する
必要な設定ファイルの配置
まずは通常通りVSCodeでローカルのフォルダを開きましょう。
その後、以下のファイルを配置していきます。
ディレクトリ構成は以下の通りです。
. ├── .devcontainer │ └── devcontainer.json ├── .vscode │ └── launch.json ├── Dockerfile ├── main.py └── requirements.txt
main.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): name = "Hello World" return name if __name__ == '__main__': app.run(host='localhost', port=9000)
Dockerfile
FROM python:3.9.8 WORKDIR /opt/build ADD requirements.txt /opt/build/ RUN python -m pip install --upgrade pip RUN pip install -r requirements.txt
requirements.txt
flake8==3.7.8 flask==1.1.2 gunicorn==19.9.0
.devcontainer/devcontainer.json
{ "name": "Python3.9 開発環境Docker", "dockerFile": "../Dockerfile", "extensions": [ "ms-python.python", "njpwerner.autodocstring", "mosapride.zenkaku", "octref.vetur", "ms-python.vscode-pylance", "streetsidesoftware.code-spell-checker" ], "forwardPorts": [9000] }
.vscode/launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Python3.9 開発環境", "type": "python", "request": "launch", "program": "${file}", "console": "internalConsole" } ] }
コンテナで開発環境を開く
設定ファイルの作成まで完了したら、画面左下の緑のアイコンをクリックします。
Remote Developmentのメニューが開きます。「Open Folder in Container」を選択し、先程の設定ファイルを置いたフォルダを開きましょう。
初めて開く場合はDockerfileのビルドが始まります。
以下のように、Python3.9が利用できるDocker環境が立ち上がりました。
python main.py
でFlaskを実行してみます。
.devcontainer/devcontainer.json
で9000番ポートでコンテナにアクセスすることができました。
まとめ
今回はVSCodeの拡張機能「Remote Development」を使って、PythonのDocker開発環境を構築してみました。
Pythonだけであれば、pyenvとvenvを使った環境で十分なところはありましたが、コンテナ環境であれば、
ぜひ「Remote Development」を導入して、楽しいVSCodeライフを送りましょう!