Apple Silicon Macでクローラーを作った時に、DockerでPlaywrightが動かせなくてハマったので、解決策を共有しようと思います。
結論
Node.jsで動かすときはこれです。Pythonを使いたいときは読み替えればできると思います。
Dockerfile
FROM ubuntu:bionic
# Install node16
RUN apt-get update && apt-get install -y curl && \
curl -sL https://deb.nodesource.com/setup_16.x | bash - && \
apt-get install -y nodejs
# Install chromium
RUN apt update && apt install -y chromium-browser
# ...
index.js
import { chromium } from "playwright";
chromium
.launch({
executablePath: "/usr/bin/chromium-browser",
})
.then((browser) => { /* Code Here */ })
何が起こったか
Playwrightは公式でDockerイメージを公開しています。
Docker | Playwright
playwright/Dockerfile.bionic at master · microsoft/playwright
このイメージをM1 Macで動かそうとしたら、アーキテクチャが違うと怒られました。
アーキテクチャの違いを吸収するために、--platform linux/amd64
を指定して起動しても、実行時にメモリ関連のエラーが発生してしまいました。
結局、arm64ネイティブで動くイメージが必要になったので、公式イメージのDockerfileを参考に作成しました。