はまったりひらめいたり…とか…

Angularや.NETやAzureやその他色々。

かんたんなdevcontainerのコンテナ構成作り方メモ

はじめに

この記事は2022年3月時点の情報で作成されています。

参照時期によっては掲載のコードなど動作しない可能性がありますのでその点ご留意ください。

とても便利なdevcontainer...だが…

Visual Studio Codeのdevcontainer(Visual Studio Code Remote - Containers)は非常に便利です。

が、世間一般で公開されているコンテナだけだと、ちょっと自分の開発用途に合わないってことが多いです。

なので基本的に自分でコンテナイメージを作ることになると思うのですが、これがまぁ大変です。

常日頃Dockerfileを弄るような開発をしているわけではないですし、一回作ったらあとはそれ使い続けるみたいなこともするのでなかなか食指が伸びない。

(.NETの開発なんかだと構築比較的楽だから余計に伸びない…)

なので、都度都度思い出せるように楽に作るためのメモ書きを残しておこうと思います。

devcontainerの作り方自体は記事が多く転がっていると思うので開発環境のコンテナづくりのメモになります。

devcontainerのDockerfileやdocker-composeファイルを楽に作る

そもそも自分の開発用途に合うものがないか探してみる

vscode-dev-containersのリポジトリに大量のサンプルが転がっています。

そもそもここの構成で自分の開発用途にあっているものがないか探してみるというのが良さそうです。

vscode-dev-containers/containers at main · microsoft/vscode-dev-containers · GitHub

.NETの開発からJava、Denoまで様々なものが転がっています。

ひょっとしたらここ覗くだけで解決する可能性のほうが高いかもしれません。

コンテナの作りかたを見る

たとえばdotnetAzure Functions(Java)を組み合わせたいなーとなった場合があるかもしれません。

その場合はそれぞれの.devcontainerの中にあるDockerfilebase.Dockerfileの中を見てみます。

Azure Functions(Java)の場合はDockerFile内にFROM mcr.microsoft.com/azure-functions/java:4-java11-core-toolsしているのですが

そもそもこいつどうやって作ってるのよ?って情報はコメントで書いてあるURLのhttps://github.com/Azure/azure-functions-docker/blob/dev/host/4/bullseye/amd64/java/java11/java11-core-tools.Dockerfileから参照することができます。

dotnetの場合はbase.Dockerfileですね。

このような感じで比較的シンプルな構成から開発環境を構築するための構成を、どんどんたどっていくこともやりやすいです。

なのでまずはこのリポジトリにあるものをベースに始めていくというのが良さそうだと思っていますし

開発用のコンテナを作るための初学者の勉強にも最適だと思います。

作ってみたもの

CsharpStudy/LearnDevContainer at master · Takas0522/CsharpStudy · GitHub

Angular + ASP.NET Core + Azure Functions(Java) + azurite な完全に俺得にしかならないような環境…

ただ、ここで書いている流れでやれば、こういうニッチな環境であってもコンテナ初学者でも構成しやすいだろうと思いました。