🦁

ローカル環境を汚さずに環境構築する方法

2023/02/01に公開

はじめに

開発をしていると新たに人が参加したりしますが、その時の環境構築ってなんだかんだうまくいかなかったり、地味に時間がかかったりするのでそんな時におすすめの方法がVisual Studio CodeのDev Containersプラグインを使うことです。

前提

  • すでにGitリポジトリを作成済み
  • ローカルマシンに下記がインストールされている

手順

  • Visual Stido CodeにDev Containersプラグインをインストールする
    • 補足:Dev Containersがどのようなものかはリンク先を参照ください
  • Visual Studio Codeの左下の緑色のアイコンを押下して、「Clone Repository in Container Volume」を押下する
  • 任意のGitリポジトリのクローンurlを入力する
  • ローカルでGitの認証をすでに済ませている場合は特にこの時にログインを求められることはないが、していない場合は認証を求められます
  • リポジトリのルートディレクトリに.devcontainer/devcontainer.jsonがない場合はいろいろ質問されて答えると.devcontainer/devcontainer.jsonが作成されます。
  • Dev Containersを使用して立ち上げたコンテナ内でDockerを使用する場合の.devcontainer/devcontainer.json
{
	"name": "Docker in Docker",
	"image": "mcr.microsoft.com/devcontainers/base:bullseye",
	"features": {
		"ghcr.io/devcontainers/features/docker-in-docker:2": {
			"version": "latest",
			"enableNonRootDocker": "true",
			"moby": "true"
		},
		"ghcr.io/devcontainers/features/java:1": {},
		"ghcr.io/devcontainers-contrib/features/bash-command:1": {},
		"ghcr.io/devcontainers-contrib/features/maven-sdkman:2": {}
	},
	"extensions": [
		"redhat.java",
		"ms-azuretools.vscode-docker"
	]
}
  • featuresにはコンテナ内で使用するランタイムやビルドツールなどを指定します。
  • extentionsにはコンテナ内のVisual Studio Codeに使用する拡張機能のIDを記載します。
  • 初回作成時の質問に答えることで作成することもできますし、あとから変更を加えることもできます。変更を加えたあとはコンテナを再作成します。
  • .devcontainer/devcontainer.jsonを作成したら、gitにpushします
  • 他の人がリポジトリをクローンして環境を構築する際は、すでに.devcontainer/devcontainer.jsonがあるのでコンテナの設定はせずに環境構築が完了します

つまずいたところ

  • Dokcer in Dockerを使用して環境構築をして、さらにバインドマウントを使用している場合
    • バインドマウントによって作成されたファイルの権限がデフォルトのコンテナ内のuser(vsocde)には権限が付与されないためデバッガーをうまく起動させられない事象が発生した
    • その場合はsudo chmod 777 バインドマウントしたフォルダを実行することによってエラーが解決できた

参考

Discussion