Dockerfile 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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_x86="system-images;android-R;google_apis;x86"
  70. ARG ANDROID_PLATFORM_VERSION="platforms;android-R"
  71. ARG ANDROID_SDK_VERSION="sdk-tools-linux-4333796.zip"
  72. ARG ANDROID_SDK_PACKAGES="${ANDROID_EMULATOR_PACKAGE_ARM} ${ANDROID_EMULATOR_PACKAGE_x86} ${ANDROID_PLATFORM_VERSION} platform-tools emulator"
  73. RUN wget https://dl.google.com/android/repository/${ANDROID_SDK_VERSION} -P /tmp && \
  74. unzip -d /opt/android /tmp/${ANDROID_SDK_VERSION}
  75. ENV ANDROID_HOME=/opt/android
  76. ENV PATH "$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
  77. # sdkmanager
  78. RUN mkdir /root/.android/
  79. RUN touch /root/.android/repositories.cfg
  80. # This is to create an empty auth_token file, so that he doesn't bother me with password for Telnet requests
  81. RUN touch /root/.android/.emulator_console_auth_token
  82. RUN yes Y | sdkmanager --licenses
  83. RUN yes Y | sdkmanager --verbose --no_https ${ANDROID_SDK_PACKAGES}
  84. # avdmanager
  85. ENV GRADLE_VERSION=5.4.1
  86. ENV ANDROID_API_LEVEL=28
  87. ENV ANDROID_BUILD_TOOLS_LEVEL=28.0.3
  88. ENV EMULATOR_NAME=test
  89. ENV EMULATOR_NAME_x86="android_x86"
  90. ENV EMULATOR_NAME_ARM="android_arm"
  91. RUN echo "no" | avdmanager --verbose create avd --force --name "${EMULATOR_NAME_x86}" --device "pixel" --package "${ANDROID_EMULATOR_PACKAGE_x86}"
  92. RUN echo "no" | avdmanager --verbose create avd --force --name "${EMULATOR_NAME_ARM}" --device "pixel" --package "${ANDROID_EMULATOR_PACKAGE_ARM}"
  93. ENV LD_LIBRARY_PATH "$ANDROID_HOME/emulator/lib64:$ANDROID_HOME/emulator/lib64/qt/lib"
  94. ADD start.sh /
  95. RUN chmod +x start.sh
  96. # Now install appium
  97. RUN apt-get install -y --no-install-recommends npm nodejs
  98. RUN node install appium
  99. RUN npm install utf-8-validate bufferutil
  100. RUN npm install -g appium
  101. # Workaround for wrong baangt checkout
  102. WORKDIR /baangt
  103. RUN git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
  104. RUN git fetch origin
  105. RUN git checkout Appium
  106. RUN pip3 install -r requirements.txt
  107. EXPOSE 5901
  108. ENV USER root
  109. CMD [ "/root/start-vncserver.sh" ]