🦁
ローカル環境を汚さずに環境構築する方法
はじめに
開発をしていると新たに人が参加したりしますが、その時の環境構築ってなんだかんだうまくいかなかったり、地味に時間がかかったりするのでそんな時におすすめの方法がVisual Studio CodeのDev Containersプラグインを使うことです。
前提
- すでにGitリポジトリを作成済み
- ローカルマシンに下記がインストールされている
- Visual Studio Code
- Docker(環境に応じてDocker Desktopなど)
- 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