From d22766ba886d0d6df8d5c1fd8164bff613dd0a1e Mon Sep 17 00:00:00 2001 From: rasmus Date: Wed, 23 Dec 2020 06:52:52 +0200 Subject: [PATCH] Dockerization --- .gitignore | 6 +++++- Dockerfile | 13 +++++++++++++ docker-compose.yml | 10 ++++++++++ prom.py | 8 +++++--- requirements.txt | 3 +++ 5 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index 7dea42c..600dd32 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ __pycache__ -scraperMain.out \ No newline at end of file +scraperMain.out +.env +bss.env +id_rsa +id_rsa.pub \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7c9634e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM python:3-slim + +WORKDIR /bss + +COPY requirements.txt requirements.txt +RUN pip install --no-cache-dir -r requirements.txt + +RUN mkdir .ssh +COPY . . + +EXPOSE 80 +# port 80, one worker, 210s timeout, from prom.py file. +CMD [ "gunicorn", "-b :80", "-w 1", "-t 210", "prom:app" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bbab41b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3' +services: + bss: + build: . + volumes: + - './id_rsa:/bss/.ssh/id_rsa' + #ports: + # - '8000:80' # EXPOSING TO THE INTERWEBZ IS A BAD IDEA. USE DOCKER NETWORKS OR A REVERSE PROXY INSTEAD. + env_file: + - bss.env # SSH_HOSTNAME=172.16.16.16 \ No newline at end of file diff --git a/prom.py b/prom.py index 7189ff9..6a6b18a 100644 --- a/prom.py +++ b/prom.py @@ -1,9 +1,11 @@ """ ENV VARIABLES AVAILABLE: - SSH_HOSTNAME - - SSH_KEYPATH + - SSH_KEYPATH (defaults: /bss/id_rsa) + - PREFIX (default: bladetest_) """ """ +Run in development env: export FLASK_ENV=development export FLASK_APP=prom.py flask run @@ -13,11 +15,11 @@ import os # for ENV arguments import scraperMain, prom_servers -PREFIX = 'bladetest_' enc = 'k-space-blade-02' # for now ~~hard~~softcoded in, we'd need to add parsing in hostnames, and add a similar enc env var. hostname = str(os.environ['SSH_HOSTNAME']) -sshkeypath = os.getenv('SSH_KEYPATH') +sshkeypath = os.getenv('SSH_KEYPATH','/bss/.ssh/id_rsa') +PREFIX = os.getenv('PREFIX','bladetest_') ### FLASK ### app = Flask(__name__) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..76a4f28 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +paramiko ~= 2.7.2 +Flask ~= 1.1.2 +gunicorn ~= 20.0.4