Browse Source

backend: Add Docker support

Andreas Berthoud 4 years ago
parent
commit
bbb3bc7a88
  1. 4
      backend/.dockerignore
  2. 14
      backend/docker-compose.yml
  3. 5
      backend/docker-entrypoint.sh
  4. 12
      backend/dockerfile
  5. 3
      backend/monsun_backend/command_execution.py
  6. 47
      backend/nginx.conf
  7. 12
      backend/uwsgi.ini

4
backend/.dockerignore

@ -0,0 +1,4 @@
**/__pycache__/
build/
dist/
**/*.egg-info

14
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"

5
backend/docker-entrypoint.sh

@ -0,0 +1,5 @@
#!/usr/bin/env bash
pip install -r requirements.txt
service nginx start
uwsgi --ini uwsgi.ini

12
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

3
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__)

47
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;
}
}
}

12
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
Loading…
Cancel
Save