Dockerfile 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. FROM ubuntu:18.04
  2. LABEL maintainer "Bernhard Buhl <info@baangt.org>"
  3. RUN echo "Europe/Rome" > /etc/timezone
  4. RUN apt-get update -q && \
  5. export DEBIAN_FRONTEND=noninteractive && \
  6. apt-get install -y --no-install-recommends tzdata
  7. RUN dpkg-reconfigure -f noninteractive tzdata
  8. # Install packages
  9. RUN apt-get update -q && \
  10. export DEBIAN_FRONTEND=noninteractive && \
  11. apt-get install -y --no-install-recommends software-properties-common && \
  12. add-apt-repository universe && \
  13. apt-get update -q && \
  14. apt-get remove -y python3.6 && \
  15. apt-get install -y --no-install-recommends wget curl rsync netcat mg vim bzip2 zip unzip && \
  16. apt-get install -y --no-install-recommends libx11-6 libxcb1 libxau6 jq python3-setuptools python3-tk && \
  17. apt-get install -y --no-install-recommends lxde tightvncserver xvfb dbus-x11 x11-utils && \
  18. apt-get install -y --no-install-recommends xfonts-base xfonts-75dpi xfonts-100dpi && \
  19. apt-get install -y --no-install-recommends python-pip python3.7-dev python-qt4 python3-pip tk-dev && \
  20. apt-get install -y --no-install-recommends libssl-dev git jq firefox && \
  21. apt-get install -y cpu-checker openjdk-8-jdk libglu1 libpulse-dev libasound2 libc6 \
  22. libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxi6 libxtst6 libnss3
  23. # Install Baangt
  24. RUN git clone -b master https://gogs.earthsquad.global/athos/baangt --single-branch && \
  25. pip3 install -r baangt/requirements.txt
  26. WORKDIR /root/
  27. # VNC-Server
  28. RUN mkdir -p /root/.vnc
  29. COPY xstartup /root/.vnc/
  30. RUN chmod a+x /root/.vnc/xstartup
  31. RUN touch /root/.vnc/passwd && \
  32. /bin/bash -c "echo -e 'password\npassword\nn' | vncpasswd" > /root/.vnc/passwd && \
  33. chmod 400 /root/.vnc/passwd && \
  34. chmod go-rwx /root/.vnc && \
  35. touch /root/.Xauthority
  36. COPY start-vncserver.sh /root/
  37. COPY baangt.sh /root/
  38. RUN chmod a+x /root/start-vncserver.sh && \
  39. chmod a+x /root/baangt.sh && \
  40. echo "mycontainer" > /etc/hostname && \
  41. echo "127.0.0.1 localhost" > /etc/hosts && \
  42. echo "127.0.0.1 mycontainer" >> /etc/hosts
  43. WORKDIR /baangt
  44. RUN mkdir /baangt/browserDrivers
  45. RUN python3 baangt.py --reloadDrivers=True
  46. EXPOSE 5901
  47. ENV USER root
  48. CMD [ "/root/start-vncserver.sh" ]
  49. #===============
  50. # Expose Ports
  51. #---------------
  52. # 4723
  53. # Appium port
  54. # 5554
  55. # Emulator port
  56. # 5555
  57. # ADB connection port
  58. #===============
  59. EXPOSE 4723 5554 5555
  60. # ===============================================================================
  61. # Alternative emulator installation from android-container Dockerfile from google
  62. # ===============================================================================
  63. WORKDIR /
  64. # gradle
  65. ENV GRADLE_USER_HOME=/cache
  66. VOLUME $GRADLE_USER_HOME
  67. # android
  68. # ARG ANDROID_EMULATOR_PACKAGE_ARM="system-images;android-25;google_apis;armeabi-v7a"
  69. ARG ANDROID_EMULATOR_PACKAGE_ARM="system-images;android-25;google_apis;armeabi-v7a"
  70. # ARG ANDROID_EMULATOR_PACKAGE_x86="system-images;android-R;google_apis;x86"
  71. ARG ANDROID_PLATFORM_VERSION="platforms;android-R"
  72. ARG ANDROID_SDK_VERSION="sdk-tools-linux-4333796.zip"
  73. # ARG ANDROID_SDK_VERSION="platform-tools_r29.0.6-linux.zip"
  74. # ARG ANDROID_SDK_VERSION="commandlinetools-linux-6200805_latest.zip" # Very bad version!
  75. # ARG ANDROID_SDK_VERSION="tools_r25.2.5-linux.zip" # works
  76. # ARG ANDROID_SDK_VERSION="tools_r25.2.5-linux.zip"
  77. # ARG ANDROID_SDK_PACKAGES="${ANDROID_EMULATOR_PACKAGE_ARM} ${ANDROID_EMULATOR_PACKAGE_x86} ${ANDROID_PLATFORM_VERSION} platform-tools emulator"
  78. ARG ANDROID_SDK_PACKAGES="${ANDROID_EMULATOR_PACKAGE_ARM} ${ANDROID_PLATFORM_VERSION} platform-tools emulator"
  79. RUN wget https://dl.google.com/android/repository/${ANDROID_SDK_VERSION} -P /tmp && \
  80. unzip -d /opt/android /tmp/${ANDROID_SDK_VERSION}
  81. ENV ANDROID_HOME=/opt/android
  82. ENV PATH "$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
  83. # sdkmanager
  84. RUN mkdir /root/.android/
  85. RUN touch /root/.android/repositories.cfg
  86. # This is to create an empty auth_token file, so that he doesn't bother me with password for Telnet requests
  87. RUN touch /root/.android/.emulator_console_auth_token
  88. RUN export ANDROID_HOME=$PWD/android-sdk-linux
  89. RUN yes Y | /opt/android/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses
  90. RUN yes Y | /opt/android/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --verbose --no_https ${ANDROID_SDK_PACKAGES}
  91. RUN yes Y | /opt/android/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --verbose --no_https "system-images;android-21;google_apis;armeabi-v7a"
  92. # avdmanager
  93. ENV GRADLE_VERSION=5.4.1
  94. ENV ANDROID_API_LEVEL=28
  95. ENV ANDROID_BUILD_TOOLS_LEVEL=28.0.3
  96. ENV EMULATOR_NAME=test
  97. #ENV EMULATOR_NAME_x86="android_x86"
  98. ENV EMULATOR_NAME_ARM="android_arm"
  99. ENV EMULATOR_NAME_SMALL="27inch"
  100. # RUN echo "no" | avdmanager --verbose create avd --force --name "${EMULATOR_NAME_x86}" --device "pixel" --package "${ANDROID_EMULATOR_PACKAGE_x86}"
  101. RUN echo "no" | avdmanager --verbose create avd --force --name "${EMULATOR_NAME_ARM}" --device "pixel" --package "${ANDROID_EMULATOR_PACKAGE_ARM}"
  102. RUN echo "no" | avdmanager --verbose create avd --force --name "${EMULATOR_NAME_SMALL}" --device 20 --package "${ANDROID_EMULATOR_PACKAGE_ARM}"
  103. # Make SD card
  104. WORKDIR /root/.android/avd/
  105. RUN mksdcard 32M sdcard.img
  106. WORKDIR /
  107. ENV LD_LIBRARY_PATH "$ANDROID_HOME/emulator/lib64:$ANDROID_HOME/emulator/lib64/qt/lib"
  108. ADD start.sh /
  109. RUN chmod +x start.sh
  110. # Now install appium
  111. RUN apt-get install -y --no-install-recommends npm nodejs telnet nano
  112. RUN npm install utf-8-validate bufferutil
  113. RUN npm install -g appium
  114. # Workaround for wrong baangt checkout
  115. WORKDIR /baangt
  116. RUN git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
  117. RUN git fetch origin
  118. RUN git checkout Appium
  119. RUN pip3 install -r requirements.txt
  120. # Make browsermob-proxy executable
  121. RUN chmod +x /baangt/browsermob-proxy/bin/browsermob-proxy
  122. EXPOSE 5901
  123. ENV USER root
  124. CMD [ "/root/start-vncserver.sh" ]
  125. # Notes
  126. # advmanager create avd --device 20 --package 'system-images;android-25;google_apis;armeabi_v7a' -n '27inch_arm" creates
  127. # a smaller device screen.
  128. # can be run with
  129. # sdkmanager --list gives list of available images. For this docker container, only *;armeabi-v7a seems to work
  130. # avdmanager list gives all available device listings.
  131. # avdmanager -device 20 is small, but seems too small. Got working older Android (_10, 21) but these don't have ADB enabled,
  132. # so not usable for appium
  133. # avdmanager -device 7 (Nexus 4)