From bbb3bc7a88c8d7b78a514e9c80292ed92db6a8ae Mon Sep 17 00:00:00 2001 From: Andreas Berthoud Date: Wed, 28 Jul 2021 13:19:59 +0200 Subject: [PATCH] backend: Add Docker support --- backend/.dockerignore | 4 ++ backend/docker-compose.yml | 14 ++++++ backend/docker-entrypoint.sh | 5 +++ backend/dockerfile | 12 ++++++ backend/monsun_backend/command_execution.py | 3 +- backend/nginx.conf | 47 +++++++++++++++++++++ backend/uwsgi.ini | 12 ++++++ 7 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 backend/.dockerignore create mode 100644 backend/docker-compose.yml create mode 100755 backend/docker-entrypoint.sh create mode 100644 backend/dockerfile create mode 100644 backend/nginx.conf create mode 100644 backend/uwsgi.ini diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..66a3cdf --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,4 @@ +**/__pycache__/ +build/ +dist/ +**/*.egg-info diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml new file mode 100644 index 0000000..714244f --- /dev/null +++ b/backend/docker-compose.yml @@ -0,0 +1,14 @@ +version: "2" + +services: + monsun_backend: + build: . + container_name: monsun_backend + restart: always + ports: + - 80:80 + volumes: + - ${PWD}:/app/ + command: ["bash", "./docker-entrypoint.sh"] + # devices: + # - "/dev/tty.usbmodem207E3283544E1:/dev/tty.usbmodem207E3283544E1" diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh new file mode 100755 index 0000000..5bb56c3 --- /dev/null +++ b/backend/docker-entrypoint.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +pip install -r requirements.txt +service nginx start +uwsgi --ini uwsgi.ini diff --git a/backend/dockerfile b/backend/dockerfile new file mode 100644 index 0000000..5059604 --- /dev/null +++ b/backend/dockerfile @@ -0,0 +1,12 @@ +# stage 1 +FROM python:3.7-slim-buster + +VOLUME /app +WORKDIR /app + +RUN apt-get update \ + && apt-get -y install python3-dev \ + && apt-get -y install build-essential \ + && apt-get -y install nginx \ + && apt-get -qy install netcat \ + && pip install --upgrade setuptools wheel diff --git a/backend/monsun_backend/command_execution.py b/backend/monsun_backend/command_execution.py index f1341a1..d301009 100644 --- a/backend/monsun_backend/command_execution.py +++ b/backend/monsun_backend/command_execution.py @@ -17,8 +17,6 @@ from typing import Tuple from serial import Serial -from backend.monsun_backend.util import log_function_call - from . import commands from .commands import Command from .commands import CommandId @@ -27,6 +25,7 @@ from .commands import Request from .commands import Response from .commands import get_response_class from .container import get_initialize_container +from .util import log_function_call _logger = logging.getLogger(__file__) diff --git a/backend/nginx.conf b/backend/nginx.conf new file mode 100644 index 0000000..0c42b0b --- /dev/null +++ b/backend/nginx.conf @@ -0,0 +1,47 @@ +user www-data; +worker_processes auto; +pid /run/nginx.pid; + +events { + worker_connections 1024; + use epoll; + multi_accept on; +} + +http { + access_log /dev/stdout; + error_log /dev/stdout; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + client_max_body_size 20M; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + index index.html index.htm; + + server { + listen 80 default_server; + listen [::]:80 default_server; + server_name localhost; + root /var/www/html; + + location / { + include uwsgi_params; + uwsgi_pass unix:/tmp/uwsgi.socket; + uwsgi_read_timeout 1h; + uwsgi_send_timeout 1h; + proxy_send_timeout 1h; + proxy_read_timeout 1h; + + proxy_buffer_size 128k; + proxy_buffers 4 256k; + proxy_busy_buffers_size 256k; + } + } +} diff --git a/backend/uwsgi.ini b/backend/uwsgi.ini new file mode 100644 index 0000000..7b0ad7f --- /dev/null +++ b/backend/uwsgi.ini @@ -0,0 +1,12 @@ +[uwsgi] +wsgi-file = wsgi.py +uid = www-data +gid = www-data +master = true +processes = 1 + +socket = /tmp/uwsgi.socket +chmod-sock = 664 +vacuum = true + +die-on-term = true \ No newline at end of file