動機
Selenium と OpenCV が同居したコンテナが必要だったが軽量なものが存在しなかったため作ってみました。
ベースは Selenium 側
Selenium 側は ここ に軽量のものがあるのでこちらをベースにします。
OpenCV はビルドする
残念ながら Alpine にはまだ Python のライブラリまでインストールしてくれるような apk パッケージは存在しないのでビルドします。この際に以下の点に留意することによりイメージが小さくなります。
- 1つのステップでビルドと不要ファイル(ビルドに使用したディレクトリ、及びビルドにしか使わないライブラリ)の削除を行う
ライブラリのインストール → ビルド → ライブラリの削除
を3つのステップに分けた場合に 1.2GB だったイメージも、1つのステップにすると 477MB まで小さくなりました。DockerHub にアップロードして圧縮されたイメージサイズは 180MB と十分実用に耐えるものです。
- OpenCV のオプションは最小限にする
今回は GPU も不要でシングルスレッドで最低限のライブラリ(cvtColor() とか findContour() とか)が動作してくれれば良いので、テストや TBB など削れるものはとことん削っています。もしかすると用途によっては使いたい機能がないという状態かもしれませんが、それはオプションを自身で ON にしていけば良いでしょう。
結果
Python 3.9.6 + OpenCV 4.5.3 のイメージ
DockerHub: kempei/selenium-opencv
GitHub: selenium-opencv
宜しければご活用下さい。