VSCode Remote Containerを使い始めたが、参画しているプロジェクトでは .devcontainer/ をgit管理していないため、リポジトリに影響がないようgitignoreしたいだけの話。
はじめに
M1 Macへの移行を機に、フルDockerを目指して試行錯誤している内の一幕。
この記事時点では、Docker Desktopは使わずに、lima + Dockerで環境構築している。
Remote Containersのバージョンは v0.209.6 となっている。
$ docker -v
Docker version 20.10.12, build e91ed5707e
$ docker-compose -v
Docker Compose version 2.2.3
$ lima -v
limactl version 0.8.0Remote Containersで接続すると、特に設定しなくても ~/.ssh/known_hosts と ~/.gitconfig はコンテナ側にコピーされた。
なので、ホスト側で .gitconfig の core.excludesfile に .gitignore_global を設定して、コンテナ側で .gitignore_global を配置して除外されるようにしていく。
.gitignore_global
まずは、ホスト側の .gitconfig に以下の設定を追記する。
[core]
excludesfile = ~/.gitignore_globalホスト側に .gitignore_global はなくても問題なく使えるはずだが、一応追加しておく。
.devcontainer/
docker-compose.override.*コンテナ側の .gitignore_global は、Remote Containersの接続に使う docker-compose.yml で配置する。
services:
app:
command: |
/bin/sh -c "echo '.devcontainer/' >> /root/.gitignore_global;
echo 'docker-compose.override.*' >> /root/.gitignore_global;
rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0';
while sleep 1000; do :; done"volumes でマウントすると、何故かコンテナ側がディレクトリになってしまうので、仕方なく command で .gitignore_global を作成するようにした。ついでに docker-compose.override.yml も除外している。
.gitignore_global を使用せずに、 /root/.config/git/ignore に設定する方法もあるが、設定しても何故か反映されなかったので、苦肉でこのようにしている。
あとはコンテナをビルドし直せば配置されているはず…!
Command Palletから Rebuild Container で実行できる。

ビルド完了後、catコマンドで確認できる。
$ cat /root/.gitignore
.devcontainer
docker-compose.override.*上記のような結果が返ってきたら、git status でも .devcontainer/ が除外されているはず。
おわりに
おそらくもっといい方法はありそうだけどとりあえず満足した。