【日記】dockerでpython+selenium環境構築
今日やっていた作業のメモです。
chromedriverは、「https://chromedriver.storage.googleapis.com/LATEST_RELEASE」でバージョンを確認して、そのバージョンのdriverをダウンロードするようにすれば都度Dockerfileを修正しなくても良くなりそうだったけど、そこまでやる気力がなかった。
事前準備
・Dockerをインストール
・Dockerfileを作成
以下のサンプルを参考に必要箇所を修正
・IPAフォントをダウンロード
ここからIPAフォントをダウンロードして、Dockerfileと同じ場所に配置。
Dockerfile
FROM ubuntu:20.10
# ここはchromeのバージョンに合わせて変える。
ARG CHROME_DRIVER_URL=https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_linux64.zip
# 環境変数設定
ENV TZ=Asia/Tokyo
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG ja_JP.UTF-8
ENV PYTHONIOENCODIND utf_8
# 色々とインストール
RUN \
apt-get update && \
apt-get install -y python3.8 curl wget unzip python3.8-distutils gnupg sudo apt-utils tzdata && \
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
apt-get update && \
apt-get install -y google-chrome-stable && \
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
rm -f /usr/bin/python /usr/bin/python3 && \
ln /usr/bin/python3.8 /usr/bin/python && \
ln /usr/bin/python3.8 /usr/bin/python3 && \
python3 get-pip.py && \
wget $CHROME_DRIVER_URL && \
unzip chromedriver_linux64.zip && \
mv chromedriver /usr/local/bin/. && \
rm -f chromedriver_linux64.zip && \
rm -f get-pip.py && \
apt-get install -y language-pack-ja-base language-pack-ja && \
locale-gen ja_JP.UTF-8
# Pythonライブラリインストール
RUN \
pip install --upgrade pip && \
pip install selenium beautifulsoup4
# フォントの設定。Dockerfileと同じ場所にIPAフォントを配置しておく。
# https://moji.or.jp/ipafont/ipafontdownload/
RUN mkdir -p /root/.fonts
ADD ipaexg.ttf /root/.fonts/.
ADD ipaexm.ttf /root/.fonts/.
# Define default command.
CMD ["/bin/bash"]
この例だと、
・ubuntu20.10
・python3.8+seleinum
・Chrome86 (ChromeDriverもchromeのバージョンに合わせる)
という環境ができます。
ビルド
docker build -t selenium-headless-chrome:latest .
コンテナ作成
docker run --rm -it selenium-headless-chrome /bin/bash
--rmを指定しているのでコンテナを抜けるとコンテナは破棄されます。