Using supervisor
This commit is contained in:
parent
06770df1db
commit
78cae6a79c
30
Dockerfile
30
Dockerfile
|
@ -17,11 +17,20 @@ RUN apt-get install xvfb x11vnc -y
|
|||
#=========================================================
|
||||
RUN apt-get install openbox menu python-numpy net-tools -y
|
||||
|
||||
#====================
|
||||
# Install Supervisor
|
||||
#====================
|
||||
RUN apt-get install supervisor -y
|
||||
|
||||
#=============
|
||||
# Set WORKDIR
|
||||
#=============
|
||||
WORKDIR /root
|
||||
|
||||
#======================
|
||||
# Clone noVNC projects
|
||||
#======================
|
||||
RUN apt-get install git -y
|
||||
WORKDIR /root
|
||||
RUN git clone https://github.com/kanaka/noVNC.git && \
|
||||
cd noVNC/utils && git clone https://github.com/kanaka/websockify websockify
|
||||
|
||||
|
@ -65,9 +74,10 @@ RUN npm install -g appium@$APPIUM_VERSION
|
|||
#============================================================
|
||||
RUN apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils -y
|
||||
|
||||
#======================
|
||||
# noVNC Configurations
|
||||
#======================
|
||||
#================================================
|
||||
# noVNC Default Configurations
|
||||
# These Configurations can be changed through -e
|
||||
#================================================
|
||||
ENV DISPLAY=:0 \
|
||||
SCREEN=0 \
|
||||
SCREEN_WIDTH=1600 \
|
||||
|
@ -75,7 +85,8 @@ ENV DISPLAY=:0 \
|
|||
SCREEN_DEPTH=16 \
|
||||
LOCAL_PORT=5900 \
|
||||
TARGET_PORT=6080 \
|
||||
TIMEOUT=1
|
||||
TIMEOUT=1 \
|
||||
LOG_PATH=/var/log/supervisor
|
||||
RUN ln -s noVNC/vnc_auto.html noVNC/index.html
|
||||
|
||||
#==============
|
||||
|
@ -84,13 +95,14 @@ RUN ln -s noVNC/vnc_auto.html noVNC/index.html
|
|||
EXPOSE 4723
|
||||
EXPOSE 6080
|
||||
|
||||
#=================
|
||||
# Add Browser Apk
|
||||
#=================
|
||||
#==================
|
||||
# Add Browser APKs
|
||||
#==================
|
||||
COPY example/browser_apk /root/browser_apk
|
||||
|
||||
#===================
|
||||
# Run docker-appium
|
||||
#===================
|
||||
COPY supervisord.conf /root/
|
||||
COPY service /root/service
|
||||
CMD python -m service.start
|
||||
CMD /usr/bin/supervisord --configuration supervisord.conf
|
||||
|
|
|
@ -34,14 +34,6 @@ def run():
|
|||
subprocess.check_call('ln -s $ANDROID_HOME/tools/{shortcut_file} $ANDROID_HOME/tools/emulator'.format(
|
||||
shortcut_file='emulator64-x86' if emulator_type == TYPE_X86 else 'emulator64-arm'), shell=True)
|
||||
|
||||
# Start Xvfb
|
||||
subprocess.check_call('Xvfb ${DISPLAY} -screen ${SCREEN} ${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH} & '
|
||||
'sleep ${TIMEOUT}', shell=True)
|
||||
|
||||
# Start noVNC
|
||||
vnc_cmd = 'openbox-session & x11vnc -display ${DISPLAY} -nopw -ncache 10 -forever & ' \
|
||||
'./noVNC/utils/launch.sh --vnc localhost:${LOCAL_PORT} --listen ${TARGET_PORT}'
|
||||
|
||||
# Option to connect with selenium server
|
||||
connect_to_grid = str_to_bool(str(os.getenv('CONNECT_TO_GRID', False)))
|
||||
logger.info('Connect with selenium grid? {input}'.format(input=connect_to_grid))
|
||||
|
@ -61,12 +53,11 @@ def run():
|
|||
# Start installation of android packages, emulator creation and appium in a terminal
|
||||
android_cmd = get_android_bash_commands(android_version, emulator_type)
|
||||
if android_cmd:
|
||||
cmd = '({vnc}) & (xterm -T "Android-Appium" -n "Android-Appium" -e \"{android} && ' \
|
||||
'/bin/echo $EMULATOR_NAME && {appium}\")'.format(
|
||||
vnc=vnc_cmd, android=android_cmd, appium=appium_cmd)
|
||||
cmd = 'xterm -T "Android-Appium" -n "Android-Appium" -e \"{android} && ' \
|
||||
'/bin/echo $EMULATOR_NAME && {appium}\"'.format(android=android_cmd, appium=appium_cmd)
|
||||
else:
|
||||
logger.warning('There is no android packages installed!')
|
||||
cmd = '({vnc}) & (xterm -e \"{appium}\")'.format(vnc=vnc_cmd, appium=appium_cmd)
|
||||
cmd = 'xterm -e \"{appium}\"'.format(appium=appium_cmd)
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
|
||||
|
||||
|
|
29
supervisord.conf
Normal file
29
supervisord.conf
Normal file
|
@ -0,0 +1,29 @@
|
|||
[supervisord]
|
||||
nodaemon=true
|
||||
logfile=%(ENV_LOG_PATH)s/supervisord.log
|
||||
childlogdir=%(ENV_LOG_PATH)s
|
||||
|
||||
[program:xvfb]
|
||||
command=/usr/bin/Xvfb %(ENV_DISPLAY)s -screen %(ENV_SCREEN)s %(ENV_SCREEN_WIDTH)sx%(ENV_SCREEN_HEIGHT)sx%(ENV_SCREEN_DEPTH)s
|
||||
stdout_logfile=%(ENV_LOG_PATH)s/xvfb.stdout.log
|
||||
stderr_logfile=%(ENV_LOG_PATH)s/xvfb.stderr.log
|
||||
|
||||
[program:openbox]
|
||||
command=/usr/bin/openbox-session
|
||||
stdout_logfile=%(ENV_LOG_PATH)s/openbox.stdout.log
|
||||
stderr_logfile=%(ENV_LOG_PATH)s/openbox.stderr.log
|
||||
|
||||
[program:x11vnc]
|
||||
command=/usr/bin/x11vnc -display %(ENV_DISPLAY)s -nopw -ncache 10 -forever
|
||||
stdout_logfile=%(ENV_LOG_PATH)s/x11vnc.stdout.log
|
||||
stderr_logfile=%(ENV_LOG_PATH)s/x11vnc.stderr.log
|
||||
|
||||
[program:novnc]
|
||||
command=./noVNC/utils/launch.sh --vnc localhost:%(ENV_LOCAL_PORT)s --listen %(ENV_TARGET_PORT)s
|
||||
stdout_logfile=%(ENV_LOG_PATH)s/novnc.stdout.log
|
||||
stderr_logfile=%(ENV_LOG_PATH)s/novnc.stderr.log
|
||||
|
||||
[program:docker-appium]
|
||||
command=python -m service.start
|
||||
stdout_logfile=%(ENV_LOG_PATH)s/docker-appium.stdout.log
|
||||
stderr_logfile=%(ENV_LOG_PATH)s/docker-appium.stderr.log
|
Loading…
Reference in a new issue