FROM golang:1.17 as go COPY tmp/devtools /devtools RUN \ apt-get update && \ apt-get install -y upx-ucl libx11-dev && \ cd /devtools && \ GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" && \ upx /devtools/devtools FROM ubuntu:18.04 ARG APPIUM_VERSION="1.8.1" RUN \ apt update && \ apt remove -y libcurl4 && \ apt install -y apt-transport-https ca-certificates tzdata locales libcurl4 curl gnupg && \ curl --silent --location https://deb.nodesource.com/setup_12.x | bash - && \ apt install -y --no-install-recommends \ curl \ iproute2 \ nodejs \ openjdk-8-jdk-headless \ unzip \ xvfb \ libpulse0 \ libxcomposite1 \ libxcursor1 \ libxi6 \ libasound2 \ fluxbox \ x11vnc \ feh \ wmctrl \ libglib2.0-0 && \ apt-get clean && \ rm -Rf /tmp/* && rm -Rf /var/lib/apt/lists/* RUN cd / && npm install --prefix ./opt/ appium@$APPIUM_VERSION COPY android.conf /etc/ld.so.conf.d/ COPY fluxbox/aerokube /usr/share/fluxbox/styles/ COPY fluxbox/init /root/.fluxbox/ COPY fluxbox/aerokube.png /usr/share/images/fluxbox/ COPY --from=go /devtools/devtools /usr/bin/ # Android SDK ENV ANDROID_HOME /opt/android-sdk-linux ENV PATH /opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/emulator:$PATH ENV LD_LIBRARY_PATH ${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/gles_swiftshader:${ANDROID_HOME}/emulator/lib64/qt/lib:${ANDROID_HOME}/emulator/lib64/vulkan:${LD_LIBRARY_PATH} ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ARG ANDROID_DEVICE="" ARG REPLACE_IMG="y" ARG AVD_NAME="android6.0-1" ARG BUILD_TOOLS="build-tools;23.0.1" ARG PLATFORM="android-23" ARG EMULATOR_IMAGE="system-images;android-23;default;x86" ARG EMULATOR_IMAGE_TYPE="default" ARG ANDROID_ABI="x86" ARG SDCARD_SIZE="500" ARG USERDATA_SIZE="500" RUN \ curl -o sdk-tools.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && \ mkdir -p /opt/android-sdk-linux /root/.config/Android\ Open\ Source\ Project/ && \ unzip -q sdk-tools.zip -d /opt/android-sdk-linux && \ rm sdk-tools.zip && \ yes | sdkmanager --licenses RUN \ sdkmanager "emulator" "tools" "platform-tools" "$BUILD_TOOLS" "platforms;$PLATFORM" "$EMULATOR_IMAGE" && \ mksdcard "$SDCARD_SIZE"M sdcard.img && \ echo "no" | ( \ ([ -n "$ANDROID_DEVICE" ] && avdmanager create avd -n "$AVD_NAME" -k "$EMULATOR_IMAGE" --abi "$ANDROID_ABI" --device "$ANDROID_DEVICE" --sdcard /sdcard.img ) || \ avdmanager create avd -n "$AVD_NAME" -k "$EMULATOR_IMAGE" --abi "$ANDROID_ABI" --sdcard /sdcard.img \ ) && \ ldconfig && \ ( \ resize2fs /root/.android/avd/$AVD_NAME.avd/userdata.img "$USERDATA_SIZE"M || \ /opt/android-sdk-linux/emulator/qemu-img resize -f raw /root/.android/avd/$AVD_NAME.avd/userdata.img "$USERDATA_SIZE"M \ ) && \ ([ -z "$REPLACE_IMG" ] || mv /root/.android/avd/$AVD_NAME.avd/userdata.img /root/.android/avd/$AVD_NAME.avd/userdata-qemu.img ) && \ rm /opt/android-sdk-linux/system-images/$PLATFORM/$EMULATOR_IMAGE_TYPE/"$ANDROID_ABI"/userdata.img COPY ["Emulator.conf", "/root/.config/Android Open Source Project/Emulator.conf"] COPY emulator-snapshot.sh tmp/chromedriver* *.apk /usr/bin/ # Entrypoint COPY tmp/entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"]