|
| 1 | +FROM ubuntu:24.04 |
| 2 | +ARG DEBIAN_FRONTEND=noninteractive |
| 3 | + |
| 4 | +RUN apt update -y && \ |
| 5 | + apt install -y \ |
| 6 | + binutils \ |
| 7 | + curl \ |
| 8 | + dpkg \ |
| 9 | + dpkg-dev \ |
| 10 | + fakeroot \ |
| 11 | + gnupg2 \ |
| 12 | + libgl-dev \ |
| 13 | + locales \ |
| 14 | + maven \ |
| 15 | + python-is-python3 \ |
| 16 | + python3 \ |
| 17 | + unzip \ |
| 18 | + wget \ |
| 19 | + xvfb \ |
| 20 | + xz-utils && \ |
| 21 | + locale-gen en_US.UTF-8 && \ |
| 22 | + rm -rf /var/lib/apt/lists/* |
| 23 | +ENV PATH="/usr/lib/x86_64-linux-gnu/:$PATH" |
| 24 | + |
| 25 | +# Install OpenJDK 21 |
| 26 | +ARG JAVA_VERSION=21 |
| 27 | +RUN apt update -y && \ |
| 28 | + apt install -y \ |
| 29 | + openjdk-${JAVA_VERSION}-jdk && \ |
| 30 | + rm -rf /var/lib/apt/lists/* |
| 31 | +ENV JAVA_HOME=/usr/lib/jvm/java-${JAVA_VERSION}-openjdk-amd64 |
| 32 | +ENV PATH="$JAVA_HOME/bin:$PATH" |
| 33 | + |
| 34 | +# Install NodeJS 22 |
| 35 | +RUN apt update -y && \ |
| 36 | + wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key && \ |
| 37 | + wget -qO- https://deb.nodesource.com/setup_22.x | bash - && \ |
| 38 | + apt install -y nodejs && \ |
| 39 | + locale-gen en_US.UTF-8 && \ |
| 40 | + rm -rf /var/lib/apt/lists/* |
| 41 | + |
| 42 | +# Use UTF-8 by default |
| 43 | +ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 |
| 44 | +ENV JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 |
| 45 | + |
| 46 | +# Install Android SDK |
| 47 | +ENV ANDROID_HOME=/android/sdk |
| 48 | +ARG CMD_TOOLS_VERSION=13114758 |
| 49 | +ARG CMD_TOOLS_ROOT=$ANDROID_HOME/cmdline-tools/$CMD_TOOLS_VERSION |
| 50 | +ARG SDK_MANAGER=$CMD_TOOLS_ROOT/bin/sdkmanager |
| 51 | +RUN mkdir -p $CMD_TOOLS_ROOT && \ |
| 52 | + export CMD_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-${CMD_TOOLS_VERSION}_latest.zip" && \ |
| 53 | + wget $CMD_TOOLS_URL -O cmd-tools.zip && \ |
| 54 | + unzip cmd-tools.zip && \ |
| 55 | + rm cmd-tools.zip && \ |
| 56 | + mv cmdline-tools/* $CMD_TOOLS_ROOT/ |
| 57 | +ARG ANDROID_PLATFORM=android-35 |
| 58 | +RUN yes | $SDK_MANAGER --licenses && \ |
| 59 | + $SDK_MANAGER "platforms;$ANDROID_PLATFORM" && \ |
| 60 | + cd $ANDROID_HOME/platforms/$ANDROID_PLATFORM && \ |
| 61 | + ls -1 | grep -v android.jar | xargs rm -rf |
| 62 | + |
| 63 | +# Install Google Chrome |
| 64 | +ARG CHROME_VERSION="140.0.7339.127-1" |
| 65 | +# https://googlechromelabs.github.io/chrome-for-testing/ |
| 66 | +ARG CHROME_DRIVER_VERSION="140.0.7339.82" |
| 67 | +ARG CHROME_BIN=/usr/bin/google-chrome-stable |
| 68 | +RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ |
| 69 | + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A6DCF7707EBC211F && \ |
| 70 | + echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \ |
| 71 | + apt update -y && \ |
| 72 | + apt install -y google-chrome-stable=$CHROME_VERSION && \ |
| 73 | + wget https://storage.googleapis.com/chrome-for-testing-public/$CHROME_DRIVER_VERSION/linux64/chromedriver-linux64.zip -P ~/tmp && \ |
| 74 | + mkdir -p /root/.gradle/selenium/chrome && unzip -d /root/.gradle/selenium/chrome ~/tmp/chromedriver-linux64.zip && rm ~/tmp/chromedriver-linux64.zip && \ |
| 75 | + rm -rf /var/lib/apt/lists/* |
| 76 | + |
| 77 | +# Install Firefox |
| 78 | +ARG FIREFOX_VERSION="142.0" |
| 79 | +ARG GECKO_DRIVER_VERSION="0.36.0" |
| 80 | +RUN wget -q -O /tmp/firefox.deb https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.deb && \ |
| 81 | + dpkg -i /tmp/firefox.deb && \ |
| 82 | + rm /tmp/firefox.deb && \ |
| 83 | + apt --fix-broken install -y && \ |
| 84 | + wget https://github.com/mozilla/geckodriver/releases/download/v$GECKO_DRIVER_VERSION/geckodriver-v$GECKO_DRIVER_VERSION-linux64.tar.gz && \ |
| 85 | + tar -xvzf geckodriver-v$GECKO_DRIVER_VERSION-linux64.tar.gz && \ |
| 86 | + mkdir -p /root/.gradle/selenium/gecko && \ |
| 87 | + mv geckodriver /root/.gradle/selenium/gecko && \ |
| 88 | + rm -rf /var/lib/apt/lists/* |
0 commit comments