FROM appium/appium:1.8.1-p2 LABEL maintainer "Budi Utomo " #============= # Set WORKDIR #============= WORKDIR /root #================== # General Packages #------------------ # xterm # Terminal emulator # supervisor # Process manager # socat # Port forwarder #------------------ # NoVNC Packages #------------------ # x11vnc # VNC server for X display # openbox # Windows manager # menu # Debian menu # python-numpy # Numpy, For faster performance: https://github.com/novnc/websockify/issues/77 # net-tools # Netstat #------------------ # Video Recording #------------------ # ffmpeg # Video recorder # jq # Sed for JSON data #================== RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \ xterm \ supervisor \ socat \ x11vnc \ openbox \ menu \ python-numpy \ net-tools \ ffmpeg \ jq \ && rm -rf /var/lib/apt/lists/* #======= # noVNC # Use same commit id that docker-selenium uses # https://github.com/elgalu/docker-selenium/blob/236b861177bd2917d864e52291114b1f5e4540d7/Dockerfile#L412-L413 #======= ENV NOVNC_SHA="b403cb92fb8de82d04f305b4f14fa978003890d7" \ WEBSOCKIFY_SHA="558a6439f14b0d85a31145541745e25c255d576b" RUN wget -nv -O noVNC.zip "https://github.com/kanaka/noVNC/archive/${NOVNC_SHA}.zip" \ && unzip -x noVNC.zip \ && rm noVNC.zip \ && mv noVNC-${NOVNC_SHA} noVNC \ && wget -nv -O websockify.zip "https://github.com/kanaka/websockify/archive/${WEBSOCKIFY_SHA}.zip" \ && unzip -x websockify.zip \ && mv websockify-${WEBSOCKIFY_SHA} ./noVNC/utils/websockify \ && rm websockify.zip \ && ln noVNC/vnc_auto.html noVNC/index.html #================================================ # noVNC Default Configurations # These Configurations can be changed through -e #================================================ ENV DISPLAY=:0 \ SCREEN=0 \ SCREEN_WIDTH=1600 \ SCREEN_HEIGHT=900 \ SCREEN_DEPTH=16 \ LOCAL_PORT=5900 \ TARGET_PORT=6080 \ TIMEOUT=1 \ VIDEO_PATH=/tmp/video \ LOG_PATH=/var/log/supervisor #==================== # Install genymotion #==================== ENV GENYMOTION_VERSION=2.12.1 \ PATH="${PATH}:/root/genymotion" COPY genymotion/${GENYMOTION_VERSION}/genymotion /root/genymotion #======================= # Set default variables #======================= ENV APPIUM_LOG=$LOG_PATH/appium.log ENV GENYMOTION=true COPY genymotion/generate_config.sh /root RUN chmod +x /root/generate_config.sh #=============== # Expose Ports #--------------- # 4723 # Appium port # 6080 # noVNC port # 5555 # ADB connection port #=============== EXPOSE 4723 6080 5555 #======================= # Run docker-genymotion #======================= COPY src /root/src COPY supervisord.conf /root/ RUN chmod -R +x /root/src && chmod +x /root/supervisord.conf COPY genymotion/geny_start.sh /root RUN chmod +x /root/geny_start.sh CMD ["./geny_start.sh"]