VSCode Remote Development の仕組みを使うことで、ローカルマシンのグローバルを汚すことなく開発を行うことができます。
Remote Development の接続先としては、SSHで接続可能なリモートマシンや、WSLなどがあります。 その中の一つである Docker Container を使った remote development を導入したので備忘録的にまとめておきます。
基本的な手順は 本家のドキュメント が充実しているので、細かいところで「こうしたいけどどうすりゃいいのか」というところに絞って書いていきます。
環境 🔗
[ローカルマシン]
- Mac mini(M1, 2020)
- macOS Monterey 12.4
- Docker 20.10.6
[Docker Container]
- Ubuntu 20.04.4 LTS
Dockerfile のベースの部分を抜粋 。
FROM ubuntu:latest
ARG UNAME="vscode"
ARG UID=1000
RUN useradd ${UNAME} -m -u ${UID} -g root
USER ${UID}
Integrated Terminal で zsh を使いたい 🔗
Dockerfile 内で zsh がインストールされている前提。
やり方はいくつか考えられますが、devcontainer.jsonを使うのが良さそうでした。
{
"settings": {
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.profiles.linux": {
"bash": {
"path": "bash",
"icon": "terminal-bash"
},
"zsh": {
"path": "zsh"
}
}
}
}
ローカルマシンの .SSH をマウントしたい 🔗
これも devcontainer.json を使って設定できます。
{
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind"
]
}
type=bindをつけないと volume と見做されるっぽいので注意。
cf: https://matsuand.github.io/docs.docker.jp.onthefly/storage/bind-mounts/
Rebuild Container で、docker start に失敗する 🔗
コンテナを消してあげればOK。
docker container rm <CONTAINER ID>
資料 🔗
- devcontainer.json: https://code.visualstudio.com/docs/remote/devcontainerjson-reference