最新バージョンに追随するよう,PGroongaなどが入ったDockerイメージを作っています.本記事公開時点で最新のPGroonga 2.3.2およびGroonga 11.0.7に基づいています.本日のビルドでは,新たにPostgreSQL 14をベースとしたものを作成しました.
ただしビルドに少し手間取りました.latestと,pg-13からpg-9までは,問題なくビルドでき,テストスクリプトもokでした.masterブランチから,git checkout -b pg-14
を実行してpg-14のブランチを作ったあと,Dockerfileを開いて,「FROM postgres:12-alpine」の12を14に変更しました.そして,docker build -t takehiko/pgroonga:pg-14 .
のコマンド実行では,途中で以下のようにエラーが出て,途中終了してしまうのです.
(略) config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands config.status: executing default commands make: /bin/sh: Operation not permitted make: *** [Makefile:321: config.h] Error 127 (略)
PGroongaではなくMeCabのconfigure時のエラーです.
これについて,docker run -it --rm --name pg14a postgres:14-alpine /bin/sh
を実行して,Dockerfileに書いていたコマンドを(環境変数を置き換えながら)逐次実行すると,configureでエラー終了とならず,makeも通りました.あれれ…
検索して,情報を見つけました.
まとめると以下の状況です。
- Alpine 3.14.0 からシステムコール faccessat2 を使うようになったため、ホストOSで以下を必要とするようになった
弊社では、GitLab runner が動作しているサーバーの Docker バージョンを最新にしたらエラーが起きなくなりました。
「Alpine 3.14.0」には,見覚えがあります.https://hub.docker.com/_/postgresでは,14-alpineとapline3.14が,同じものを参照するタグ名になっています.
それよりむしろ注意すべきなのは,「Docker 20.10.0 以上」のほうでしょう.docker build ...で失敗している,Ubuntuの端末で,docker version
を実行すると,「19.03.13」と出ました.
それに対しWSL2の環境だと「20.10.8」です.Ubuntuのブランチをgit branch -D pg-14
で取り除き,WSL2のほうでブランチを切ってからビルドすると,うまくいきました.
takehiko/pgroonga - Docker Image | Docker Hubの記載内容が古く,Dockerイメージは5か月前の内容でした.autobuildをするにはProへのアップグレードが必要となっていました.アップグレードはせず,Docker Hub クイックスタート | Docker ドキュメントを読んで,コマンドラインで(docker loginのあと)「docker push ...」によりプッシュしました.