1
0

More than 1 year has passed since last update.

Apple Silicon 上の Docker で Chromium-browser を用いてスクリーンショットを撮った

Posted at

環境

この記事の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

をするなどして、ユニークなファイル名をつけてあげてください。

出来上がった ScreenShot

221227.png

参考記事

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0