init
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
ARG VERSION
|
||||
FROM selenoid/dev_opera:$VERSION
|
||||
|
||||
COPY operadriver_linux64/operadriver /usr/bin/
|
||||
COPY entrypoint.sh /
|
||||
|
||||
RUN chmod +x /usr/bin/operadriver
|
||||
USER selenium
|
||||
|
||||
EXPOSE 4444
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
@@ -0,0 +1,16 @@
|
||||
FROM browsers/base:7.3.6
|
||||
|
||||
ARG VERSION
|
||||
ARG PACKAGE=opera-stable
|
||||
|
||||
LABEL browser=$PACKAGE:$VERSION
|
||||
|
||||
RUN \
|
||||
curl -s https://deb.opera.com/archive.key | apt-key add - && \
|
||||
echo 'deb https://deb.opera.com/opera-stable/ stable non-free' > /etc/apt/sources.list.d/opera-blink.list && \
|
||||
apt-get update && \
|
||||
apt-get -y --no-install-recommends install libgtk-3-0 $PACKAGE=$VERSION && \
|
||||
( [ "$PACKAGE" != "opera-stable" ] && ln /usr/bin/$PACKAGE /usr/bin/opera ) || true && \
|
||||
opera --version && \
|
||||
rm /etc/apt/sources.list.d/$PACKAGE.list && \
|
||||
rm -Rf /tmp/* && rm -Rf /var/lib/apt/lists/*
|
||||
Executable
+85
@@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
SCREEN_RESOLUTION=${SCREEN_RESOLUTION:-"1920x1080x24"}
|
||||
DISPLAY_NUM=99
|
||||
export DISPLAY=":$DISPLAY_NUM"
|
||||
|
||||
VERBOSE=${VERBOSE:-""}
|
||||
DRIVER_ARGS=${DRIVER_ARGS:-""}
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
DRIVER_ARGS="$DRIVER_ARGS --verbose"
|
||||
fi
|
||||
|
||||
clean() {
|
||||
if [ -n "$FILESERVER_PID" ]; then
|
||||
kill -TERM "$FILESERVER_PID"
|
||||
fi
|
||||
if [ -n "$XSELD_PID" ]; then
|
||||
kill -TERM "$XSELD_PID"
|
||||
fi
|
||||
if [ -n "$PULSE_PID" ]; then
|
||||
kill -TERM "$PULSE_PID"
|
||||
fi
|
||||
if [ -n "$XVFB_PID" ]; then
|
||||
kill -TERM "$XVFB_PID"
|
||||
fi
|
||||
if [ -n "$DRIVER_PID" ]; then
|
||||
kill -TERM "$DRIVER_PID"
|
||||
fi
|
||||
if [ -n "$X11VNC_PID" ]; then
|
||||
kill -TERM "$X11VNC_PID"
|
||||
fi
|
||||
}
|
||||
|
||||
trap clean SIGINT SIGTERM
|
||||
|
||||
if env | grep -q ROOT_CA_; then
|
||||
mkdir -p $HOME/.pki/nssdb
|
||||
certutil -N --empty-password -d sql:$HOME/.pki/nssdb
|
||||
for e in $(env | grep ROOT_CA_ | sed -e 's/=.*$//'); do
|
||||
certname=$(echo -n $e | sed -e 's/ROOT_CA_//')
|
||||
echo ${!e} | base64 -d >/tmp/cert.pem
|
||||
certutil -A -n ${certname} -t "TC,C,T" -i /tmp/cert.pem -d sql:$HOME/.pki/nssdb
|
||||
if cat tmp/cert.pem | grep -q "PRIVATE KEY"; then
|
||||
PRIVATE_KEY_PASS=${PRIVATE_KEY_PASS:-\'\'}
|
||||
openssl pkcs12 -export -in /tmp/cert.pem -clcerts -nodes -out /tmp/key.p12 -passout pass:${PRIVATE_KEY_PASS} -passin pass:${PRIVATE_KEY_PASS}
|
||||
pk12util -d sql:$HOME/.pki/nssdb -i /tmp/key.p12 -W ${PRIVATE_KEY_PASS}
|
||||
rm /tmp/key.p12
|
||||
fi
|
||||
rm /tmp/cert.pem
|
||||
done
|
||||
fi
|
||||
|
||||
/usr/bin/fileserver &
|
||||
FILESERVER_PID=$!
|
||||
|
||||
DISPLAY="$DISPLAY" /usr/bin/xseld &
|
||||
XSELD_PID=$!
|
||||
|
||||
mkdir -p ~/pulse/.config/pulse
|
||||
echo -n 'gIvST5iz2S0J1+JlXC1lD3HWvg61vDTV1xbmiGxZnjB6E3psXsjWUVQS4SRrch6rygQgtpw7qmghDFTaekt8qWiCjGvB0LNzQbvhfs1SFYDMakmIXuoqYoWFqTJ+GOXYByxpgCMylMKwpOoANEDePUCj36nwGaJNTNSjL8WBv+Bf3rJXqWnJ/43a0hUhmBBt28Dhiz6Yqowa83Y4iDRNJbxih6rB1vRNDKqRr/J9XJV+dOlM0dI+K6Vf5Ag+2LGZ3rc5sPVqgHgKK0mcNcsn+yCmO+XLQHD1K+QgL8RITs7nNeF1ikYPVgEYnc0CGzHTMvFR7JLgwL2gTXulCdwPbg=='| base64 -d>~/pulse/.config/pulse/cookie
|
||||
HOME=$HOME/pulse pulseaudio --start --exit-idle-time=-1
|
||||
HOME=$HOME/pulse pactl load-module module-native-protocol-tcp
|
||||
PULSE_PID=$(ps --no-headers -C pulseaudio -o pid | sed -r 's/( )+//g')
|
||||
|
||||
/usr/bin/xvfb-run -l -n "$DISPLAY_NUM" -s "-ac -screen 0 $SCREEN_RESOLUTION -noreset -listen tcp" /usr/bin/fluxbox -display "$DISPLAY" -log /dev/null 2>/dev/null &
|
||||
XVFB_PID=$!
|
||||
|
||||
retcode=1
|
||||
until [ $retcode -eq 0 ]; do
|
||||
DISPLAY="$DISPLAY" wmctrl -m >/dev/null 2>&1
|
||||
retcode=$?
|
||||
if [ $retcode -ne 0 ]; then
|
||||
echo Waiting X server...
|
||||
sleep 0.1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$ENABLE_VNC" == "true" ]; then
|
||||
x11vnc -display "$DISPLAY" -passwd selenoid -shared -forever -loop500 -rfbport 5900 -rfbportv6 5900 -logfile /dev/null &
|
||||
X11VNC_PID=$!
|
||||
fi
|
||||
|
||||
DISPLAY="$DISPLAY" /usr/bin/operadriver --port=4444 --whitelisted-ips='' ${DRIVER_ARGS} &
|
||||
DRIVER_PID=$!
|
||||
|
||||
wait
|
||||
@@ -0,0 +1,62 @@
|
||||
FROM browsers/base:7.3.6
|
||||
|
||||
ARG VERSION=noop
|
||||
ARG PACKAGE=opera-stable
|
||||
|
||||
LABEL browser=$PACKAGE:$VERSION
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
apt-get -y --no-install-recommends install gconf-service \
|
||||
libasound2 \
|
||||
libatk1.0-0 \
|
||||
libc6 \
|
||||
libcairo2 \
|
||||
libcups2 \
|
||||
libdbus-1-3 \
|
||||
libexpat1 \
|
||||
libfontconfig1 \
|
||||
libfreetype6 \
|
||||
libgcc1 \
|
||||
libgconf-2-4 \
|
||||
libgdk-pixbuf2.0-0 \
|
||||
libglib2.0-0 \
|
||||
libgtk2.0-0 \
|
||||
libgtk-3-0 \
|
||||
libnspr4 \
|
||||
libnss3 \
|
||||
libnotify4 \
|
||||
libpango1.0-0 \
|
||||
libstdc++6 \
|
||||
libx11-6 \
|
||||
libx11-xcb1 \
|
||||
libxcb1 \
|
||||
libxcomposite1 \
|
||||
libxcursor1 \
|
||||
libxdamage1 \
|
||||
libxext6 \
|
||||
libxfixes3 \
|
||||
libxi6 \
|
||||
libxrandr2 \
|
||||
libxrender1 \
|
||||
libxss1 \
|
||||
libxtst6 \
|
||||
debconf \
|
||||
gnupg \
|
||||
libudev1 \
|
||||
ca-certificates \
|
||||
fonts-liberation \
|
||||
libappindicator3-1 \
|
||||
libnss3 \
|
||||
lsb-base \
|
||||
xdg-utils \
|
||||
libcurl4 \
|
||||
curl && \
|
||||
curl -O http://host.docker.internal:8080/opera.deb && \
|
||||
apt-get -y purge curl && \
|
||||
dpkg -i opera.deb && \
|
||||
( [ "$PACKAGE" != "opera-stable" ] && ln /usr/bin/$PACKAGE /usr/bin/opera ) || true && \
|
||||
rm opera.deb && \
|
||||
opera --version && \
|
||||
rm -Rf /tmp/* && \
|
||||
rm -Rf /var/lib/apt/lists/*
|
||||
Reference in New Issue
Block a user