From 2397605e6d9f6135e165d6dda78bc0696c7289ed Mon Sep 17 00:00:00 2001 From: João Vitor Rebouças Date: Thu, 4 May 2017 18:40:35 -0300 Subject: [PATCH] Adicionando Dockerfile e modificações feitas pela coppe --- Dockerfile | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------- core/processManager.py | 6 +++--- docker-compose.yml | 46 ++++++++++++++++++++++++---------------------- docker-entrypoint.sh | 4 ++++ translate-api/bin/www | 2 +- 5 files changed, 86 insertions(+), 102 deletions(-) create mode 100755 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 664d465..d352ef0 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,85 +1,63 @@ FROM ubuntu:14.04 MAINTAINER Jonathan Brilhante -#USER root -#Dependencies installation - RabbitMQ / Graylog / Nodejs +COPY ./core/translator.py /home/vlibras/translator.py +COPY ./core/renderer.py /home/vlibras/renderer.py +COPY ./core/indexer.py /home/vlibras/indexer.py +COPY ./core/PikaManager.py /home/vlibras/PikaManager.py +COPY ./core/processManager.py /home/vlibras/processManager.py +COPY ./core/logger.py /home/vlibras/logger.py +COPY ./core/Trie.py /home/vlibras/Trie.py -#Packages updates -RUN apt-get -y update -RUN apt-get -y upgrade -RUN apt-get -y update +COPY ./fonts/ /home/vlibras/fonts/ -#Install necessary packages -RUN apt-get install -y build-essential libssl-dev sudo curl wget +COPY ./translate-api/ /home/vlibras/translate-api/ +COPY ./bundles/ /home/vlibras/bundles/ -#RUN apt-get install default-jdk -y +COPY ./vlibras-translate/ /home/vlibras/vlibras-translate/ +COPY ./vlibras-libs/ /home/vlibras/vlibras-libs/ +COPY ./unityVideo/ /home/vlibras/unityVideo/ -#Install Nodejs -RUN curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - -RUN apt-get install -y nodejs - -#Install python packages -RUN apt-get install -y python-setuptools -RUN easy_install pip - -#Install python and python lib for RabbitMQ -RUN apt-get install -y python -RUN pip install pika - -#Install Graylog -RUN pip install graypy -RUN pip install graypy[amqp] - -#Install aditional packages -RUN apt-get install -y pkg-config libfreetype6-dev libpng-dev xvfb -RUN apt-get install -y python-yaml libgomp1 python-numpy python-pyfits python-matplotlib idle -RUN pip install nltk==3.0.5 nltk_tgrep --upgrade -RUN pip install pysrt ffmpy pyvirtualdisplay -RUN apt-get install -y software-properties-common - -#Install FFmpeg -RUN add-apt-repository ppa:mc3man/trusty-media -RUN apt-get -y update -RUN apt-get install -y ffmpeg gstreamer0.10-ffmpeg - -WORKDIR /root/ -RUN mkdir -p ./storage/libras - -#Copy workers to container -COPY ./core/translator.py /root/translator.py -COPY ./core/renderer.py /root/renderer.py -COPY ./core/indexer.py /root/indexer.py -COPY ./core/PikaManager.py /root/PikaManager.py -COPY ./core/processManager.py /root/processManager.py -COPY ./core/logger.py /root/logger.py -COPY ./core/Trie.py /root/Trie.py - -COPY ./fonts/ /root/fonts/ - -COPY ./translate-api/ /root/translate-api/ -COPY ./bundles/ /root/bundles/ - -COPY ./vlibras-translate/ /root/vlibras-translate/ -COPY ./vlibras-libs/ /root/vlibras-libs/ -COPY ./unityVideo/ /root/unityVideo/ - -#Workers environment variables -ENV VLIBRAS_VIDEO_CREATOR="/root/unityVideo/videoCreator.x86_64" -ENV VLIBRAS_VIDEO_LIBRAS="/root/storage/libras" -ENV VLIBRAS_VIDEO_SCREENS="/root/storage/frames" -ENV SIGNS_VLIBRAS="/root/bundles" -ENV TEXT_FONTS="/root/fonts/FreeSans.ttf" +ENV VLIBRAS_VIDEO_CREATOR="/home/vlibras/unityVideo/videoCreator.x86_64" +ENV VLIBRAS_VIDEO_LIBRAS="/home/vlibras/storage/libras" +ENV VLIBRAS_VIDEO_SCREENS="/home/vlibras/storage/frames" +ENV SIGNS_VLIBRAS="/home/vlibras/bundles" +ENV TEXT_FONTS="/home/vlibras/fonts/FreeSans.ttf" #Translator environment variables -ENV HUNPOS_TAGGER="/root/vlibras-libs/aelius/bin/hunpos-tag" -ENV AELIUS_DATA="/root/vlibras-libs/aelius/aelius_data" -ENV TRANSLATE_DATA="/root/vlibras-translate/data" -ENV NLTK_DATA="/root/vlibras-libs/aelius/nltk_data" -ENV PYTHONPATH=":/root/vlibras-libs/aelius:/root/vlibras-translate/src:/root/vlibras-libs/aelius:/root/vlibras-translate/src" - -#Portas de comunicacao do container -WORKDIR /root/translate-api/ -RUN npm i - -#Comando de entrada quando inicializado -ENTRYPOINT ( sleep 1m) ; npm start & python /root/processManager.py +ENV HUNPOS_TAGGER="/home/vlibras/vlibras-libs/aelius/bin/hunpos-tag" +ENV AELIUS_DATA="/home/vlibras/vlibras-libs/aelius/aelius_data" +ENV TRANSLATE_DATA="/home/vlibras/vlibras-translate/data" +ENV NLTK_DATA="/home/vlibras/vlibras-libs/aelius/nltk_data" +ENV PYTHONPATH=":/home/vlibras/vlibras-libs/aelius:/home/vlibras/vlibras-translate/src:/home/vlibras/vlibras-libs/aelius:/home/vlibras/vlibras-translate/src" + +RUN apt-get update -y && \ + apt-get install -y sudo curl wget software-properties-common && \ + curl -sL https://deb.nodesource.com/setup_6.x | bash - && \ + add-apt-repository ppa:mc3man/trusty-media && \ + apt-get -y update && \ + apt-get install -y pkg-config libfreetype6-dev libpng-dev xvfb build-essential libssl-dev nodejs python-pip python-yaml libgomp1 python-numpy python-pyfits python-matplotlib idle ffmpeg gstreamer0.10-ffmpeg && \ + pip install nltk==3.0.5 nltk_tgrep --upgrade && \ + pip install pysrt ffmpy pyvirtualdisplay pika && \ + groupadd -r vlibras && useradd -r -g vlibras vlibras && \ + mkdir -p /home/vlibras/storage/libras + +WORKDIR /home/vlibras/translate-api/ + +COPY ./docker-entrypoint.sh / + +RUN npm i && \ + mkdir -p /home/vlibras/translate-api/logs && \ + chown -R vlibras. /home/vlibras && \ + chmod +x /docker-entrypoint.sh && \ + mkdir -p /storage && \ + chown -R vlibras. /storage + +USER vlibras + +VOLUME ["/home/vlibras/translate-api/logs"] +VOLUME ["/home/vlibras/storage"] + +EXPOSE 8080 + +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/core/processManager.py b/core/processManager.py index 94123ab..b81ab9c 100755 --- a/core/processManager.py +++ b/core/processManager.py @@ -16,7 +16,7 @@ def signalHandler(signal, frame): def spawnRenderer(): while KEEP_RUNNING: - proc = subprocess.Popen(["/root/renderer.py"], shell=True, stdout=subprocess.PIPE) + proc = subprocess.Popen(["/home/vlibras/renderer.py"], shell=True, stdout=subprocess.PIPE) print("Process RENDERER PID: " + str(proc.pid)) try: stdoutdata, stderrdata = proc.communicate() @@ -26,7 +26,7 @@ def spawnRenderer(): def spawnTranslator(): while KEEP_RUNNING: - proc = subprocess.Popen(["/root/translator.py"], shell=True, stdout=subprocess.PIPE) + proc = subprocess.Popen(["/home/vlibras/translator.py"], shell=True, stdout=subprocess.PIPE) print("Process TRANSLATOR PID: " + str(proc.pid)) try: stdoutdata, stderrdata = proc.communicate() @@ -36,7 +36,7 @@ def spawnTranslator(): def spawnIndexer(): while KEEP_RUNNING: - proc = subprocess.Popen(["/root/indexer.py"], shell=True, stdout=subprocess.PIPE) + proc = subprocess.Popen(["/home/vlibras/indexer.py"], shell=True, stdout=subprocess.PIPE) print("Process INDEXER PID: " + str(proc.pid)) try: stdoutdata, stderrdata = proc.communicate() diff --git a/docker-compose.yml b/docker-compose.yml index 9ef6b96..ab586a8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,32 +1,34 @@ version: '2' - +volumes: + tradutor-rabbitmq: + external: true + driver: 'null' + core_db: + external: true + driver: 'null' + tradutor-bd: + external: true + driver: 'null' + tradutor_logs: + external: true + driver: 'null' services: - mongo: image: mongo:3.0.4 volumes: - - /data/db - ports: - - "27017" - + - tradutor-bd:/data/db rabbit: - image: "rabbitmq:3-management" - ports: - - "15672" - - "5672" + image: rabbitmq:3-management volumes: - - ./rabbitmq:/var/lib/rabbitmq - + - tradutor-rabbitmq:/var/lib/rabbitmq api: - build: . - links: - - mongo - - rabbit - ports: - - "80:80" + image: hub.docker.planejamento.gov.br/vlibras/tradutor:coppe volumes: - - core_db:/storage/ - restart: always + - core_db:/home/vlibras/storage/ + - tradutor_logs:/home/vlibras/translate-api/logs + links: + - rabbit:rabbit + - mongo:mongo + labels: + io.rancher.container.pull_image: always -volumes: - core_db: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..b53ea77 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sleep 30 && python /home/vlibras/processManager.py & +exec /usr/bin/npm start 2>&1 | tee /home/vlibras/translate-api/logs/$HOSTNAME-out.log diff --git a/translate-api/bin/www b/translate-api/bin/www index d2a51e4..85a6004 100755 --- a/translate-api/bin/www +++ b/translate-api/bin/www @@ -9,7 +9,7 @@ var http = require('http') /** * Define the port and store in Express. */ -const PORT = 80; +const PORT = 8080; app.set('port', PORT); /** -- libgit2 0.21.2