環境
この記事のDockerfileは以下の環境で動作確認をしています。
- M2 MacBook Air
- Docker Engine: 20.10.21
- Docker Desktop: 4.15.0
完成したDockerfile
FROM --platform=linux/arm64 ubuntu:bionic
ENV LANG="C.UTF-8"
RUN apt-get update
RUN apt-get install -y \
ca-certificates \
sudo \
libgbm1 \
libnspr4 \
libnss3 \
xdg-utils \
libwayland-server0 \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libatspi2.0-0 \
libcairo2 \
libcups2 \
libpango-1.0-0 \
libxkbcommon0 \
wget
RUN apt-get install -y \
fonts-migmix \
fonts-ipamj-mincho \
fonts-horai-umefont \
fonts-takao \
xfonts-mona \
fonts-kouzan-mouhitsu
RUN wget -P /tmp/ https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+files/chromium-browser_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN wget -P /tmp/ https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+files/chromium-chromedriver_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN wget -P /tmp/ https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+files/chromium-codecs-ffmpeg-extra_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN wget -P /tmp/ https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+files/chromium-codecs-ffmpeg_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN sudo dpkg -i /tmp/chromium-codecs-ffmpeg_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN sudo dpkg -i /tmp/chromium-codecs-ffmpeg-extra_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN sudo dpkg -i /tmp/chromium-browser_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
RUN sudo dpkg -i /tmp/chromium-chromedriver_108.0.5359.71-0ubuntu0.18.04.5_arm64.deb
ARG CHROMIUM_USER_ID=1000
RUN CHROMIUM_USER_ID=1000 /bin/sh -c getent passwd "${CHROMIUM_USER_ID}" | adduser -D -H -u ${CHROMIUM_USER_ID} -h /usr/src -g "Chromium User,,," chromium-user
USER 1000
WORKDIR /home/screenshots
ENTRYPOINT ["chromium-browser", "--headless", "--disable-gpu", "--no-sandbox", "--screenshot"]
CMD ["https://google.com"]
注意点
ubuntu のバージョンは Bionic です
https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+packages
こちらにある Chromium の最新パッケージは Bionic 用です。
パッケージ最新版の URL は随時更新してください
https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+packages
ここを見ると最新の arm64 用のビルドの URL が分かるので、 wget
で取ってきているパッケージの最新版 URL とファイル名は必要に応じてお手元で更新してください。
実行すると Error と Warning が出ます
が、目的の ScreenShot 自体は取れているので、そんなに深く追及しないことにします。
実際はいろいろ調べてみたのですが、解決策は分かりませんでした。
% docker build . --tag chromium:latest
% docker run --rm -v $(pwd):/home/screenshots chromium https://google.com
[1227/120720.520117:ERROR:bus.cc(399)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[1227/120720.520249:ERROR:bus.cc(399)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[1227/120720.526345:WARNING:bluez_dbus_manager.cc(247)] Floss manager not present, cannot set Floss enable/disable.
[1227/120720.561553:WARNING:sandbox_linux.cc(380)] InitializeSandbox() called with multiple threads in process gpu-process.
[1227/120720.640869:ERROR:nss_util.cc(55)] Failed to create /.pki/nssdb directory.
[1227/120722.066661:INFO:headless_shell.cc(623)] Written to file screenshot.png.
ScreenShot のファイル名が固定されています
ここを柔軟にする方法もいまいち分かりませんでした。
なので、スクリーンショットを撮った後に、
mv screenshot.png $(date +"%y%m%d-%H%M%S").png
をするなどして、ユニークなファイル名をつけてあげてください。