Rustで使えるDevcontainerの設定を作ってみた
Rustでの開発をする際、ホストマシンの環境に色々入れたくないので毎回Dockerを使っていました。
開発時にVSCodeのDev Containersを使ってコンテナ内部に入り開発していたのですが、その後rust analyzerなどの拡張機能を毎回入れるのが面倒くさかったのでdevcontainer.jsonやDockerfileなどをまとめたリポジトリを作成しました。
以下そのリポジトリです。
※パブリックリポジトリですが、今後自分好みにRustのバージョンをあげたり、拡張機能の追加・削除、Dockerfileなどの設定を今後変更すると思います。
リポジトリを見たら何をしてるか大体わかるかもなのですが、自分的にちょっと苦戦したところだけ備忘録的に書いておこうと思います。
DockefileのGit関連の設定
コンテナ内部に入った際、Bash上に現在のブランチが表示されないのが不便だなと思いプロンプトの調整をDockerfile内で行いました。
最終的に以下サイトで作ったものを.bashrcに突っ込んでます。
生成された文字列について、一部エスケープしてDockerfileに載せないといけないものがあるので気を付けてください。自分はそこで結構ハマってました
リポジトリのものを使った場合、以下のような表示になります。
コンテナのデフォルトユーザー
なんとかしてホストマシン上の現在のユーザーをコンテナ内に継承したいと思ったのですが、自動的かつ動的は不可能っぽいという結論に至りました。
.envなどを別途作成したり、環境変数を用意するなどすれば利用者ごとに独自に設定できますが、毎回cloneするたびに.env作成するの面倒くさかったのでデフォルトの値を決めた環境変数を使う形にしてあります。
自分はwsl2環境でやっているので、1000:1000でやれば実質的に継承できるということで、1000:1000をデフォルトのユーザーになるようにしました。あとユーザー名は適当にvscodeとかにしてます。
使い方などはREADME.mdに簡単にではありますが書いておいたのでそれを見てください!
Discussion