This repository has been archived by the owner on Jan 25, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Dockerfile
55 lines (42 loc) · 1.77 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Build image
FROM python:3.11-slim AS requirements-stage
ARG CHROME_VERSION_MAIN=108
ENV CHROME_VERSION_MAIN=${CHROME_VERSION_MAIN}
WORKDIR /tmp
# Install required deps
RUN apt-get update && apt-get install -y unzip
RUN pip install poetry tqdm requests pydantic
# Build requirements.txt file
COPY ./pyproject.toml ./poetry.lock /tmp/
RUN poetry export --output=requirements.txt --without-hashes
# Download chromedriver and chrome
COPY ./scripts/download_chrome.py download_chrome.py
RUN python download_chrome.py --main-version ${CHROME_VERSION_MAIN} \
--chrome-filename /tmp/chrome.zip \
--chromedriver-filename /tmp/chromedriver.zip
RUN unzip -j /tmp/chromedriver.zip -d /tmp
RUN unzip -j /tmp/chrome.zip -d /tmp/chrome
# Main image
FROM python:3.11-slim
ENV CHROMEDRIVER_PATH=/usr/bin/chromedriver
WORKDIR /code
ENV PYTHONPATH "/code"
ENV CHROME_EXECUTABLE_PATH "/opt/chrome/chrome"
RUN apt update && apt install -y ca-certificates fonts-liberation \
libappindicator3-1 libasound2 libatk-bridge2.0-0 \
libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 \
libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 \
libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 \
libxcb1 libxcomposite1 libxcursor1 libxdamage1 \
libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 \
libxss1 libxtst6 lsb-release wget xdg-utils
# Copy requirements.txt, chromedriver, chrome from requirements-stage
COPY --from=requirements-stage /tmp/ /tmp/
COPY --from=requirements-stage /tmp/chromedriver ${CHROMEDRIVER_PATH}
COPY --from=requirements-stage /tmp/chrome /opt/chrome
# Install google chrome and make chromedriver executable
RUN chmod +x ${CHROMEDRIVER_PATH}
# Clean up
RUN rm -rf /tmp/dist /var/lib/{apt,dpkg,cache,log}/
COPY ./ /code/