-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathDockerfile-Gatf-Chrome
93 lines (80 loc) · 4.09 KB
/
Dockerfile-Gatf-Chrome
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
FROM sumeetchhetri/gatf-jar:latest
FROM ubuntu:latest
ENV D_JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/
ENV D_CHROME_DRIVER /usr/bin/chromedriver
ENV D_GATF_JAR /gatf-alldep.jar
ENV SCREEN_WIDTH 1360
ENV SCREEN_HEIGHT 1020
ENV SCREEN_DEPTH 24
ENV SCREEN_DPI 96
ENV NODE_MAJOR 20
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update -yqq && apt install -yqq --no-install-recommends zlib1g-dev ca-certificates ca-certificates curl gnupg openjdk-11-jdk openjdk-11-jre libluajit-5.1-dev luajit libssl-dev git wget unzip net-tools build-essential software-properties-common xvfb fluxbox wmctrl && rm -rf /var/lib/apt/lists/*
RUN mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
RUN apt update -yqq && apt install -yqq nodejs
RUN npm install -g autocannon
#============================================
# Google Chrome
#============================================
# can specify versions by CHROME_VERSION;
# e.g. google-chrome-stable=53.0.4785.101-1
# google-chrome-beta=53.0.4785.92-1
# google-chrome-unstable=54.0.2840.14-1
# latest (equivalent to google-chrome-stable)
# google-chrome-beta (pull latest beta)
#============================================
ARG CHROME_VERSION="google-chrome-stable"
RUN 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 -qqy \
&& apt-get -qqy install \
${CHROME_VERSION:-google-chrome-stable} \
&& rm /etc/apt/sources.list.d/google-chrome.list \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*
#============================================
# Chrome webdriver
#============================================
# can specify versions by CHROME_DRIVER_VERSION
# Latest released version will be used by default
#============================================
ARG CHROME_DRIVER_VERSION
RUN if [ -z "$CHROME_DRIVER_VERSION" ]; \
then CHROME_MAJOR_VERSION=$(google-chrome --version | sed -E "s/.* ([0-9]+)(\.[0-9]+){3}.*/\1/") \
&& CHROME_DRIVER_VERSION=$(wget --no-verbose -O - "https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_${CHROME_MAJOR_VERSION}"); \
fi \
&& echo "Using chromedriver version: "$CHROME_DRIVER_VERSION \
&& wget --no-verbose -O /tmp/chromedriver_linux64.zip https://storage.googleapis.com/chrome-for-testing-public/$CHROME_DRIVER_VERSION/linux64/chromedriver-linux64.zip \
&& rm -rf /opt/selenium/chromedriver-linux64/chromedriver \
&& unzip /tmp/chromedriver_linux64.zip -d /opt/selenium \
&& rm /tmp/chromedriver_linux64.zip \
&& mv /opt/selenium/chromedriver-linux64/chromedriver /opt/selenium/chromedriver-linux64/chromedriver-$CHROME_DRIVER_VERSION \
&& chmod 755 /opt/selenium/chromedriver-linux64/chromedriver-$CHROME_DRIVER_VERSION \
&& ln -fs /opt/selenium/chromedriver-linux64/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver
#============================================
# Add normal user and group with passwordless sudo
#============================================
RUN groupadd seluser \
--gid 1201 \
&& useradd seluser \
--create-home \
--gid 1201 \
--shell /bin/bash \
--uid 1200 \
&& usermod -a -G sudo seluser \
&& echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \
&& echo 'seluser:secret' | chpasswd
COPY --from=0 /usr/local/bin/wrk /usr/local/bin/
COPY --from=0 /usr/local/bin/wrk2 /usr/local/bin/
COPY --from=0 /usr/local/bin/vegeta /usr/local/bin/
COPY --from=0 /gatf-alldep.jar /
COPY artifacts/run-gatf.sh artifacts/run.sh /
COPY artifacts/sample1.* artifacts/jpg* artifacts/png* /home/seluser/
WORKDIR /workdir
RUN chmod +x /run-gatf.sh /run.sh
RUN chown -Rf seluser:seluser /home/seluser/* /run-gatf.sh /run.sh
USER seluser
WORKDIR /workdir
EXPOSE 9080
ENTRYPOINT ["/run.sh"]
CMD [ "-configtool", "9080", "0.0.0.0", "/workdir" ]