Dockerイメージ node:10-alpine でPuppeteerを起動しようとしたが、await puppeteer.launch()
で止まったままエラーも吐かずにTimeoutしてしまう現象が起きた。
PuppeteerのトラブルシューティングのRunning on Alpineに従って設定した。
原因はChromiumのバージョンが古い
node:10-alpineではapkのリポジトリが3.8で、
http://dl-cdn.alpinelinux.org/alpine/v3.8/main
http://dl-cdn.alpinelinux.org/alpine/v3.8/community
そのバージョンでインストールできるChromiumは、68.0.3440.75-r0だった。
そして、トラブルシューティングのページにコメントアウトで# Installs latest Chromium (77) package.
と書いてある。
これはChromiumがバージョン77以上じゃないと動かないよ〜という意味かはわからないが、とりあえず最新版(chromium-83.0.4103.116-r0)をインストールしたら、無事Puppeteerが動いた。
Chromiumの最新版をインストール
Chromiumの最新版をインストールするため、apkのリポジトリを最新版にしてインストールをする。
ただapk update
をしてもリポジトリが変わらないので、リポジトリを指定してupgradeする。
Dockerを使ってない人はsetup-apkrepos
でレポジトリを最新版に書き換えてapk upgrade
すればよい。
Dockerを使っている人は、-X|--repository
オプションで最新のレポジトリを指定してアップグレードすればよい。
$ docker-compose exec server sh
$ apk upgrade --no-cache \
-X http://dl-cdn.alpinelinux.org/alpine/v3.12/main \
-X http://dl-cdn.alpinelinux.org/alpine/v3.12/community \
chromium
レポジトリの最新バージョンは、こちらのページから確認できる
インストールしたchromiumのバージョンは以下で確認。
$ apk info chromium
chromium-83.0.4103.116-r0 description:
Chromium web browser
chromium-83.0.4103.116-r0 webpage:
https://www.chromium.org/Home
chromium-83.0.4103.116-r0 installed size:
247402496
そもそもnode:10-alineが古いのが原因だった
サーバーにnode:10-alpineイメージをインストールしたのが1年前で、いろいろ古いのが原因だった。
nodeイメージをアップグレードすれば、alpineのバージョンも3.11がインストールされているので解消できた。
$ docker pull node:10-alpine
$ docker-compose build server
$ docker-compose up -d server