Evil Martians流のRails開発Docker環境を使っていて気づいた点をメモ。
Evil Martiansのdipを使う前提です。
- リポジトリ: bibendi/dip: CLI gives the "native" interaction with applications configured with Docker Compose.
問題
Dockerにログインした状態でbundler-auditを実行すると、とっくに修正済みのはずの脆弱性警告が表示されます。
root@1528a26e7813:/app# bundler-audit
Name: rails-html-sanitizer
Version: 1.3.0
Advisory: CVE-2015-7579
Criticality: Unknown
URL: https://groups.google.com/forum/#!topic/rubyonrails-security/OU9ugTZcbjc
Title: XSS vulnerability in rails-html-sanitizer
Solution: upgrade to ~> 1.0.3
Name: rails-html-sanitizer
Version: 1.3.0
Advisory: CVE-2015-7578
Criticality: Unknown
URL: https://groups.google.com/forum/#!topic/rubyonrails-security/uh--W4TDwmI
Title: Possible XSS vulnerability in rails-html-sanitizer
Solution: upgrade to ~> 1.0.3
Name: rails-html-sanitizer
Version: 1.3.0
Advisory: CVE-2015-7580
Criticality: Unknown
URL: https://groups.google.com/forum/#!topic/rubyonrails-security/uh--W4TDwmI
Title: Possible XSS vulnerability in rails-html-sanitizer
Solution: upgrade to ~> 1.0.3
Vulnerabilities found!
Dockerの中でbundler-audit update
を実行しても変わりません。
root@0df0fbecba41:/app# bundle audit --update
Updating ruby-advisory-db ...
Skipping update
#(略)
解決方法
bundler-auditのissue↓によると、Dockerにgitをインストールする必要があるとのことでした。そういえば今の設定では入ってませんでした。gitが入ってないと通知してくれればいいのに😢。
- コメント: bundle audit --update
Evil Martians流であれば以下で修正できます。それ以外の方は頑張ってgitをDockerに追加してください。
- Aptfileに
git
を追加する docker rmi <イメージID>
で既存のイメージを削除dip compose build
でリビルドdip sh
でログインし、bundler-audit update
dip + Evil Martians流はイメージのリビルドがやりやすくて助かりました😂。rails new
やyarn install --check-files
をやり直す必要もありません。当初手動でgitを入れて結果を何とかしてDockerイメージにコミットしようとしてもがきましたが、dip + Evil Martians流ならリビルドする方が早かったのでした。
おまけ
特にRailsの開発環境の場合はgemのCネイティブ拡張のビルドのためにビルドツールも必要ですし、今回のようにgitが必要になる場合もあります。Apline Linuxやmulti stage buildでDockerイメージを薄くすることに頑張りすぎない方がいいかもという気がしてきました。