chromedriverのインストールをarmとintelのDockerfileで共通化

docker

概要

E2Eテストをするためのchromedriverは、Linuxのディストリビューションごとにパッケージで提供されていないので、おそらく直接ダウンロードしているケースがほとんどかと思います。

Dockerfile上で、アーキテクチャごとにダウンロードするファイルを振り分けるのが理想dせうが、Dockerfileではそのようなできず、shellscriptを書いて判定する必要があります。

Dockerfileにif文を書くとエスケープ文字や改行で見づらくなるので別途スクリプトを用意してアーキテクチャごとにダウンロードするファイルを変更するのが良いです。

スクリプト

RUN bin/download-chromedriver.sh && mv chromedriver /usr/local/bin/
#!/bin/bash
set -e
version=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
architecture=`uname -m`
if [ $architecture == 'aarch64' ]; then
file='chromedriver_mac_arm64.zip'
else
file='chromedriver_linux64.zip'
fi
url="http://chromedriver.storage.googleapis.com/${version}/${file}"
wget -c -N ${url} && unzip ${file}

追記

む。後日確認したら、chromedriver_mac64_m1.zipが動かなそうだ。。。

コメント