.dockerignore生成を一発で。dibo
Dockerを使っていると、.dockerignore の管理が意外と面倒だと感じることはないでしょうか。
毎回ゼロから書くのも手間ですし、プロジェクトをまたいでコピペしていると、気づけば不要なパターンが混入していたり、逆に必要なものが抜けていたりします。
docker initでも一応生成できますが、giboのような融通のきくCLIが欲しいとも感じてました。
そこで、.dockerignore ファイルをテンプレートから一発で生成できるCLIツール dibo(dockerignore boilerplates)を作りました。
名前の由来は .gitignore のボイラープレート生成ツールとして有名な gibo から着想を得ています。giboが .gitignore に特化しているように、diboはDockerに特化したツールです。
主な機能
シンプルな1コマンド生成
テンプレート名を指定するだけで .dockerignore が生成されます。複数のテンプレートを同時に指定でき、重複するパターンは自動的に除去されます。
利用可能なテンプレート
詳しくはREADME.mdをご覧ください。
テンプレート名は大文字小文字を区別しないので、dibo init go でも dibo init Go でもOK。最新の一覧は dibo list でいつでも確認できます。
.env ファイルや認証情報など、イメージに含めてはいけないファイルをまとめて除外するための専用テンプレートも用意しています。
既存ファイルを守る安全な設計
デフォルトでは既存の .dockerignore を上書きしません。
上書きしたい場合は --force、追記したい場合は --append フラグを明示的に指定してください。
ケースインセンシティブ
dibo init go でも dibo init Go でも同じテンプレートを参照します。
fzfとの連携
fzf と組み合わせることで、インタラクティブにテンプレートを選択できます。
diboは次の3パターンでのインストールが可能です。
Go
go install github.com/anton-fuji/dibo@latest
Homebrew
brew tap anton-fuji/tap
brew install dibo
Nix Flakes
# インストールせずに試せます
nix run github:anton-fuji/dibo -- list
# プロファイルにインストール
nix profile install github:anton-fuji/dibo
使い方
.dockerignore を生成する
# Goプロジェクト用
dibo init Go
# GoとSecrets(認証情報除外)を組み合わせる
dibo init Go Secrets
# Goとnode_modulesが混在するプロジェクト
dibo init Go Node
生成時のオプションは以下のとおりです。
フラグ 説明 -f, --force 既存ファイルを上書き -a, --append 既存ファイルに追記 -o <path>, --output <path> 出力先パスを指定(デフォルト: .dockerignore)
# 上書き
dibo init Go --force
# 追記
dibo init Node --append
# 別パスに出力
dibo init Go -o build/.dockerignore
テンプレートを確認する
# テンプレート一覧を表示
dibo list
# キーワードで検索
dibo search ru # -> Ruby, Rust
# テンプレートの内容を標準出力に表示
dibo dump Go
dibo dump Go Node # 複数指定可
fzfとの組み合わせ(おすすめ)
# インタラクティブに選んで追記
dibo dump $(dibo list | fzf) >> .dockerignore
fzfが入っている環境では、このワンライナーだけで好きなテンプレートを検索・選択・追記まで完結します。
おわりに
.dockerignore はDockerイメージのセキュリティやビルド速度に直結するファイルですが、後回しにされがちです。diboを使えば「とりあえずプロジェクトに合ったベースラインを1コマンドで作る」ことができます。
ぜひ試してみてください!
何か作ったものを見てもらいたいときは、ぜひ投稿タイプをShowにしてみてください👀
https://wbsb.dev/info/guidelines#post-type