-
Notifications
You must be signed in to change notification settings - Fork 7
/
Dockerfile
142 lines (129 loc) · 4.43 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
ARG PYTHON_VERSION=3.7.4
ARG DEBIAN_VERSION=buster
FROM python:${PYTHON_VERSION}-slim-${DEBIAN_VERSION} as base
LABEL authors="Scott Zelenka <https://github.com/szelenka>"
# No interactive frontend during docker build
ENV DEBIAN_FRONTEND=noninteractive \
DEBCONF_NONINTERACTIVE_SEEN=true
#===================
# Timezone settings
# Possible alternative: https://github.com/docker/docker/issues/3359#issuecomment-32150214
#===================
ENV TZ "UTC"
#==============================
# Locale and encoding settings
#==============================
ENV LANG_WHICH en
ENV LANG_WHERE US
ENV ENCODING UTF-8
ENV LANGUAGE ${LANG_WHICH}_${LANG_WHERE}.${ENCODING}
ENV LANG ${LANGUAGE}
#========================
# Miscellaneous packages
# Helper packages to setup the base image
#========================
RUN set -ex \
&& echo ">>> Core packages Setup" \
&& apt-get -yqq update \
&& apt-get -yqq dist-upgrade \
&& apt-get -yqq --no-install-recommends install \
bzip2 \
ca-certificates \
tzdata \
unzip \
wget \
jq \
curl \
locales-all \
locales \
&& echo ">>> Timezone Setup" \
&& echo "${TZ}" > /etc/timezone \
&& dpkg-reconfigure --frontend noninteractive tzdata \
&& echo ">>> Locale and encoding Setup" \
&& locale-gen ${LANGUAGE} \
&& dpkg-reconfigure --frontend noninteractive locales \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base
#============================================
# Google Chrome
#============================================
# can specify versions by CHROME_VERSION;
# e.g. google-chrome-stable=53.0.2785.101-1
# google-chrome-beta=53.0.2785.92-1
# google-chrome-unstable=54.0.2840.14-1
# latest (equivalent to google-chrome-stable)
# google-chrome-beta (pull latest beta)
#============================================
ARG CHROMIUM_VERSION="chromium"
RUN set -ex \
&& echo ">>> Chromium Setup" \
&& apt-get -yqq update \
&& apt-get -yqq --no-install-recommends install \
${CHROMIUM_VERSION:-chromium} \
${CHROMIUM_VERSION:-chromium}-l10n \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base
#============================================
# Chrome webdriver
#============================================
# can specify versions by CHROME_DRIVER_VERSION
# Latest released version will be used by default
#============================================
ARG CHROME_DRIVER_VERSION
RUN set -ex \
&& echo ">>> Chrome webdriver Setup" \
&& if [ -z "$CHROME_DRIVER_VERSION" ]; \
then CHROME_MAJOR_VERSION=$(chromium --version | sed -E "s/.* ([0-9]+)(\.[0-9]+){3}.*/\1/") \
&& CHROME_DRIVER_VERSION=$(wget --no-verbose -O - "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION}"); \
fi \
&& echo "Using chromedriver version: "$CHROME_DRIVER_VERSION \
&& wget --no-verbose -O /tmp/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip \
&& rm -rf /opt/selenium/chromedriver \
&& unzip /tmp/chromedriver_linux64.zip -d /opt/selenium \
&& rm /tmp/chromedriver_linux64.zip \
&& mv /opt/selenium/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
&& chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
&& ln -fs /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver
#============================
# Some configuration options
#============================
ENV SCREEN_WIDTH 1360
ENV SCREEN_HEIGHT 1020
ENV SCREEN_DEPTH 24
ENV SCREEN_DPI 96
ENV DISPLAY :99.0
ENV START_XVFB true
#============================
# Install Prefect
# ref: https://github.com/PrefectHQ/prefect/blob/master/Dockerfile
#============================
ARG PREFECT_VERSION
RUN set -ex \
&& echo ">>> Prefect Setup" \
&& apt-get -yqq update \
&& apt-get -yqq --no-install-recommends install \
git \
build-essential \
&& pip install --upgrade pip \
&& pip install git+https://github.com/PrefectHQ/prefect.git@${PREFECT_VERSION}#egg="prefect[kubernetes, google]" \
&& mkdir -p /root/.prefect/flows /root/.prefect/results \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base