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.0
Remote 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/
が除外されているはず。
おわりに
おそらくもっといい方法はありそうだけどとりあえず満足した。