diff --git a/.pyenvrc b/.pyenvrc new file mode 100644 index 0000000..3c1aa8a --- /dev/null +++ b/.pyenvrc @@ -0,0 +1,4 @@ +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init -)" +eval "$(pyenv virtualenv-init -)" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1e2bf86 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +FROM avatao/ubuntu:16.04 + +# Install dependencies +RUN apt-get update && \ + apt-get install -qy \ + supervisor \ + libzmq5 \ + # These dependencies are required by the bz2, readline, sqlite3 packages + libbz2-dev \ + libreadline-dev \ + libsqlite3-dev + +ENV TFW_APP_DIR="/srv/app" +COPY src/app ${TFW_APP_DIR} + +ENV TFW_COMPONENTS_DIR="/opt/components" +COPY src/components ${TFW_COMPONENTS_DIR} + +ENV TFW_CONFIG_DIR="/usr/local/lib/" +ENV PYTHONPATH=${TFW_CONFIG_DIR} +COPY lib $TFW_CONFIG_DIR + +ENV TFW_SUPERVISORD_CONF="/etc/supervisor/supervisord.conf" +COPY supervisord.conf ${TFW_SUPERVISORD_CONF} + +USER user + +COPY .pyenvrc /home/user/.pyenvrc +ENV PYTHON_VERSION="3.6.3" +RUN curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash && \ + echo "source $HOME/.pyenvrc" >> "$HOME/.bashrc" && \ + . "$HOME/.pyenvrc" && \ + pyenv install ${PYTHON_VERSION} && \ + pyenv global ${PYTHON_VERSION} && \ + pip install tornado pyzmq transitions + +ENV PYENV_ROOT="$HOME/.pyenv" +ENV PATH="$PYENV_ROOT/bin:$PATH" + +ENV WEB_PORT=4242 +EXPOSE 4242 + +CMD . "$HOME/.pyenvrc" && exec supervisord --nodaemon diff --git a/config.py b/config.py deleted file mode 100644 index ab75fdb..0000000 --- a/config.py +++ /dev/null @@ -1,5 +0,0 @@ -import os - -PUBLISHER_PORT = os.getenv('PUBLISHER_PORT', 7654) -RECEIVER_PORT = os.getenv('RECEIVER_PORT', 8765) -WEB_PORT = os.getenv('WEB_PORT', 4242) diff --git a/app.py b/src/app/app.py similarity index 100% rename from app.py rename to src/app/app.py diff --git a/buttons.py b/src/app/buttons.py similarity index 100% rename from buttons.py rename to src/app/buttons.py diff --git a/handlers/__init__.py b/src/app/handlers/__init__.py similarity index 100% rename from handlers/__init__.py rename to src/app/handlers/__init__.py diff --git a/handlers/main_handler.py b/src/app/handlers/main_handler.py similarity index 100% rename from handlers/main_handler.py rename to src/app/handlers/main_handler.py diff --git a/handlers/zmq_websocket_handler.py b/src/app/handlers/zmq_websocket_handler.py similarity index 100% rename from handlers/zmq_websocket_handler.py rename to src/app/handlers/zmq_websocket_handler.py diff --git a/static/ws_listener.js b/src/app/static/ws_listener.js similarity index 100% rename from static/ws_listener.js rename to src/app/static/ws_listener.js diff --git a/templates/index.html b/src/app/templates/index.html similarity index 100% rename from templates/index.html rename to src/app/templates/index.html diff --git a/component.py b/src/components/component.py similarity index 100% rename from component.py rename to src/components/component.py diff --git a/component_example.py b/src/components/component_example.py similarity index 100% rename from component_example.py rename to src/components/component_example.py diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 0000000..6728117 --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,23 @@ +[supervisord] +user=user +logfile = /tmp/supervisord.log +loglevel = DEBUG +pidfile = /tmp/supervisord.pid + +[unix_http_server] +file=/tmp/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock + +[program:app] +directory=%(ENV_TFW_APP_DIR)s +command=env python app.py + +[program:component_example] +directory=%(ENV_TFW_COMPONENTS_DIR)s +command=env python component_example.py +autorestart=true