VSCode の dev container を使用するための雛形です。
sudo apt install docker.io docker-buildx docker-compose-v2sudo usermod -aG docker $USERこのレポジトリを次のコマンドでクローンしてください。
git clone https://github.com/nosuz/dev_container.git
cd dev_container
rm -r .git
git init
git -m main # if needed
code .
# Edit .devcontainer/Dockerfile to install required APT packages before rebuilding this container.オプション:.devcontainer/generate_env.shまたは.devcontainer/generate_env.shを実行して USER ID を.devcontainer/.envに書き込んでおいてください。このオプションを実行することで、Python のライブラリーのようにユーザ権限でインストールされるファイルがある場合に、docker image の作成に必要な時間が短くなり、イメージのサイズが小さくなります。
bash .devcontainer/generate_env.sh
# or
python .devcontainer/generate_env.py必要なパッケージをインストールするように Dockerfile を編集してください。
このディレクトリを VSCode で開き、コマンドパレット(Ctrl + Shift + P)で Dev Containers: Rebuild container を実行すると、コンテナイメージが作成されて接続されます。
このコンテナは、コンテナを開いたユーザと同じ ID で実行されます。そのため権限の問題なしにディレクトリを共有できます。ただしコンテナ内のユーザ名は、vscodeとなり、ls -lで共有ディレクトリを見るとユーザ名が元と変わってvscodeになります。
また、.devcontainer/devcontainer.jsonのremoteUserでrootを指定した場合には、root 権限で実行されます。
Dev container では、VSCode の設定と機能拡張がリセットされます。そこで、必要な設定と機能拡張を.devcontainer/devcontainer.jsonのcustomizationsに記載します。
// devcontainer.json
{
"customizations": {
"vscode": {
"settings": {},
"extensions": ["mhutchie.git-graph", "streetsidesoftware.code-spell-checker"]
}
}
}
初期設定では、Code Spell CheckerとGit Graphがインストールされます。
editor が設定されていないため、コマンドラインからgit commit --amendなど編集が必要な操作ができません。そこで、.git/configにeditorの設定を加えます。
[core]
editor = code --wait
ローカルの~/.gitconfigに設定がある場合は、デフォルト設定ではこのファイルがコピーされるのでコンテナ毎の設定は不要です。
GitHub は、sshパッケージをインストールしてあれば他に特別な設定無く使用できると思います。次のコマンドで GitHub への接続を確認できます。
$ ssh -T git@github.com
Hi nosuz! You've successfully authenticated, but GitHub does not provide shell access.古いイメージは、次のコマンドで一括削除できます。
for i in $(docker image ls | awk '$1 == "<none>" && $2 == "<none>" { print $3 }'); do echo $i; docker image rm $i; donecodex.devcontainerは、