8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

「開発環境をDocker+Visual Studio Codeで用意できますよ」という記事です。Dockerは自分の環境に合わせて良しなにインストールしてください。

私自身が使いこなせていないので、記事を読んだ方が使った時のいい使い方などを教えてもらえると嬉しいぁという気持ちです。:kissing_heart:

dev containerとは

要は、VSCodeのDev Containersという拡張機能を入れてあげると、VSCodeが設定ファイルを読んでコンテナを立ててくれるという話です。あたかもローカルにあるファイルのように、コンテナ内のファイルをVSCodeで編集ができる。

使い方

.
┗ .devcontainer  # 設定ファイルを入れるディレクトリ
    ┣ devcontainer.json
    ┗ DockerFile

Python:3.8-slimイメージを使って、1番簡単なdevcontainer.jsonの例を挙げます。

./devcontainer/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や拡張機能の細かい設定を書き込む。

動かしてみる

dev containerの起動です。
devcontainer-start

  1. .devcontainerがあるディレクトリを開いて、左下の「><」みたいな場所をクリックする
  2. 「Reopen in Container」選択する

めちゃめちゃしょうもないコードでごめんなさい。:sweat:

devcontainer
┣ .devcontainer  # 設定ファイルを入れるディレクトリ
┃   ┗ devcontainer.json
┗ hello-world.py
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メリットも教えていただければ幸いです。:pray:

  • VSCodeがdevcontainerディレクトリをコンテナ内のworkspacesにマウントしてくれる。DockerFileだけでやっていると、毎回-vを書かなくてはいけなくて面倒臭かった。
  • 自分が使っているVSCodeの拡張機能を見直すきっかけになる。「細かい部分の把握」と「なんでもポイポイインストールをしないミニマリスト」ってエンジニアに大事そうだなと意識できる。

おわりに

簡単な紹介の記事になってしまい、無駄な電気信号をこの世に生み出してしまったという申し訳ない気持ちでいっぱいです。

本当はDev Container CLIについても書きたかったのですが、更新日を見て貰えば分かると思いますが、直前に書いたのでこれくらいで勘弁してください、なんでもしますから。:sob:

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?