普段Webのクローリングにpuppeteerを使っていて、puppeteerの実行はDockerで行っています。
クロール項目を追加することがあって、プログラムを修正してDockerでビルドして実行したところ、下記のようなエラーが出て動きませんでした。
/node_modules/puppeteer/.local-chromium/linux-768783/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
つい先日ビルドした時には問題なかったのに、突然「libXss.so.1」が無いと言われても…。
解決方法
結論から言うと、下記記事に解決方法が載っていました。
Dockerfileは下記公式情報を参考に作成していました。
しかし、記事には「google-chrome-unstable」をインストールするよう記載されていて、これまでは「libXss.so.1」も一緒にインストールされるようになっていたのですが、それがインストールされないようになったようで、代わりに「google-chrome-stable」をインストールするようにすると動くようになりました。
また、「libXss.so.1」は「libxss1」に含まれるので、「google-chrome-unstable」をインストールする前に下記をDockerfileに追加しても動くようになります。
RUN apt-get update && apt-get install libxss1
感想など
puppeteerのDockerでの動かし方を調べると、前述の公式の情報に行き着くので、結構ハマるのでは…。
そもそも「unstable」版をインストールするのがちょっと微妙だったので、不具合治ったとしても「stable」版をインストールのままで行こうと思います。
puppeteerはバージョン1、Node.jsのバージョン8の時から使っているのですが、恥ずかしながらバージョンアップはしないで使い続けていました。
以前バージョンアップを試したところ、エラー出まくりで、必要になったら対応しようと放置したのですが、ついにバージョンアップしないといけなくなったのかと、めちゃめちゃ焦りました…。
これに懲りて、時間見つけてバージョンアップするかなぁ。