この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんにちは!たぬきうどんです!
私は2018年に非IT業界から未経験でエンジニアに転職し、現在までエンジニアとして働いています。
この記事ではSeleniumをインストールしたDocker実行環境の作り方についてのを説明します。
Docker + Selenium環境を構築したいと考えている方はぜひご覧ください!
はじめに
SeleniumはWebブラウザの自動化を行うためのフレームワークです。
この記事ではSeleniumをインストールしたDocker実行環境の作り方を紹介します。
が、Seleniumには既にコミュニティによって作られたDockerイメージがあります。
「手軽にSeleniumを実行したい」といったような場合は上記のイメージを使うのをオススメします。
今回の発端は
常にスクレイピングアプリケーションを起動させるのではなく、AWS Fargateで定期実行させたい!
という思いからでした。
同じような思いでスクレイピング環境を構築したいという方はぜひこの記事をご覧下さい!
Dockerfileと必要ライブラリ
それではDockerfile
と必要ライブラリの説明を行います。
今回の実行にはPythonを、パッケージ管理にはPoetryを使用しています。
Dockerfile
まずは今回のDockerイメージの肝となるDockerfile
を紹介します。
FROM python:3.10-slim
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN apt-get update &&\
apt-get install -y wget gnupg curl
WORKDIR /chromium-driver
RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - &&\
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb &&\
apt-get install -y ./google-chrome-stable_current_amd64.deb &&\
rm google-chrome-stable_current_amd64.deb
RUN pip install --upgrade pip &&\
curl -sSL https://install.python-poetry.org | python - &&\
poetry config virtualenvs.create false
以下の箇所でChromeをインストールしています。
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - &&\
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb &&\
apt-get install -y ./google-chrome-stable_current_amd64.deb
以上が最低限のDockerfile
となります。
必要ライブラリ
Seleniumを動かすために必要なライブラリであるSelenium
とChromeDriver
をインストールします。
コンテナ起動後にインストールしていくか、Dockerfile
に組み込んでください。
Poetry add selenium
poetry add chromedriver-binary~=$(/usr/bin/google-chrome --version | perl -pe 's/([^0-9]+)([0-9]+\.[0-9]+).+/$2/g')
ChromeDriverはChromeのバージョンに合わせる必要があるため、chromedriver-binary~=$(/usr/bin/google-chrome --version | perl -pe 's/([^0-9]+)([0-9]+\.[0-9]+).+/$2/g')
で合ったバージョンを指定しています。
おわりに
以上がSeleniumをインストールしたDocker実行環境の作り方についてでした。
この記事が皆さんの助けになれば幸いです!
最後まで読んでいただき、ありがとうございました!