はじめに
「開発環境をDocker+Visual Studio Codeで用意できますよ」という記事です。Dockerは自分の環境に合わせて良しなにインストールしてください。
私自身が使いこなせていないので、記事を読んだ方が使った時のいい使い方などを教えてもらえると嬉しいぁという気持ちです。
dev containerとは
要は、VSCodeのDev Containersという拡張機能を入れてあげると、VSCodeが設定ファイルを読んでコンテナを立ててくれるという話です。あたかもローカルにあるファイルのように、コンテナ内のファイルをVSCodeで編集ができる。
使い方
.
┗ .devcontainer # 設定ファイルを入れるディレクトリ
┣ devcontainer.json
┗ DockerFile
Python:3.8-slim
イメージを使って、1番簡単なdevcontainer.json
の例を挙げます。
{
"name": "python-devcontainer",
"forwardPorts": [],
"features": {},
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance"
],
"image": "python:3.8-slim",
"settings": {}
}
この中で、どうしても必須なのはimage
プロパティくらいです。
コンテナイメージに必要なライブラリを用意するなどのカスタマイズを書いたDockerfileを用意すれば、build.dockerfile
プロパティに相対パスを指定して使わせられます。
拡張機能と設定
extension
プロパティでコンテナ内のVSCodeに追加したい拡張機能のIDを配列で指定してあげます。UIのテーマなどはローカルのVSCode設定が反映されるので、補完機能みたいな拡張機能を指定すればOKです。
settings
プロパティでVSCodeや拡張機能の細かい設定を書き込む。
動かしてみる
- .devcontainerがあるディレクトリを開いて、左下の「><」みたいな場所をクリックする
- 「Reopen in Container」選択する
めちゃめちゃしょうもないコードでごめんなさい。
devcontainer
┣ .devcontainer # 設定ファイルを入れるディレクトリ
┃ ┗ devcontainer.json
┗ hello-world.py
import os
print("Hello, world! from "+os.path.join(os.getcwd(),__file__))
root@256613a06cff:/workspaces/devcontainer# python hello-world.py
Hello, world! from /workspaces/devcontainer/hello-world.py
workspace/devcontainer/hello-world.py
から実行されているのが分かります。
個人的なメリット
読んだ方のdev containerメリットも教えていただければ幸いです。
- VSCodeが
devcontainer
ディレクトリをコンテナ内のworkspaces
にマウントしてくれる。DockerFileだけでやっていると、毎回-v
を書かなくてはいけなくて面倒臭かった。 - 自分が使っているVSCodeの拡張機能を見直すきっかけになる。「細かい部分の把握」と「なんでもポイポイインストールをしないミニマリスト」ってエンジニアに大事そうだなと意識できる。
おわりに
簡単な紹介の記事になってしまい、無駄な電気信号をこの世に生み出してしまったという申し訳ない気持ちでいっぱいです。
本当はDev Container CLIについても書きたかったのですが、更新日を見て貰えば分かると思いますが、直前に書いたのでこれくらいで勘弁してください、なんでもしますから。