From 93255ca36ca97771382f809f92a4acdb162d1380 Mon Sep 17 00:00:00 2001 From: Robert Kaye Date: Mon, 27 Jun 2016 15:39:17 +0200 Subject: [PATCH 1/4] Interim check-in --- Dockerfile | 3 +++ docker-compose.yml | 13 +++++++++++-- docker/nginx/Dockerfile | 3 +++ docker/nginx/nginx.conf | 24 ++++++++++++++++++++++++ docker/uwsgi.ini | 6 ++++++ 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 docker/nginx/Dockerfile create mode 100644 docker/nginx/nginx.conf create mode 100644 docker/uwsgi.ini diff --git a/Dockerfile b/Dockerfile index 5ad74e4736..cc88e708f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,10 @@ MAINTAINER Robert Kaye RUN apt-get update && apt-get install -y --no-install-recommends build-essential \ git \ redis-tools \ + uwsgi \ + uwsgi-plugin-python \ wget + RUN mkdir /code # PostgreSQL client diff --git a/docker-compose.yml b/docker-compose.yml index cef8641bab..33957a32c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,12 +15,12 @@ services: - ./data/redis:/data web: build: . - command: python manage.py runserver -h 0.0.0.0 -p 8000 + command: uwsgi /code/docker/uwsgi.ini volumes: - .:/code/listenbrainz-server - ./data/app:/data ports: - - "8000:8000" + - "3031:3031" links: - redis - db @@ -40,3 +40,12 @@ services: depends_on: - db - redis + nginx: + restart: always + build: + context: ./docker/nginx/ + dockerfile: Dockerfile + links: + - web:web + ports: + - "80:80" diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile new file mode 100644 index 0000000000..bb367d1ede --- /dev/null +++ b/docker/nginx/Dockerfile @@ -0,0 +1,3 @@ +FROM nginx:1.10.1 + +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf new file mode 100644 index 0000000000..f7fd76dca2 --- /dev/null +++ b/docker/nginx/nginx.conf @@ -0,0 +1,24 @@ +worker_processes 4; + +events { worker_connections 1024; } + +http { + access_log /dev/stdout; + error_log /dev/stdout info; + + server { + listen 80; + + location / { + include uwsgi_params; + uwsgi_pass web:3031; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_cache_bypass $http_upgrade; + } + } + +} diff --git a/docker/uwsgi.ini b/docker/uwsgi.ini new file mode 100644 index 0000000000..807d504309 --- /dev/null +++ b/docker/uwsgi.ini @@ -0,0 +1,6 @@ +[uwsgi] +socket = 0.0.0.0:3031 +module = manage +callable = application +chdir = /code/ +processes = 20 From 0c67c80d84d8124d332eac8d9e251c1c41c3750b Mon Sep 17 00:00:00 2001 From: Robert Kaye Date: Mon, 27 Jun 2016 17:21:10 +0200 Subject: [PATCH 2/4] Add support for uwsgi and nginx --- Dockerfile | 5 +++-- docker-compose.yml | 2 +- docker/uwsgi.ini | 5 +++-- manage.py | 3 +++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index cc88e708f1..ba118d21c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,11 +6,10 @@ MAINTAINER Robert Kaye RUN apt-get update && apt-get install -y --no-install-recommends build-essential \ git \ redis-tools \ - uwsgi \ - uwsgi-plugin-python \ wget RUN mkdir /code +RUN pip install uWSGI==2.0.13.1 # PostgreSQL client RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 @@ -41,3 +40,5 @@ RUN pip install -r requirements.txt # Now install our code, which may change frequently COPY . /code/listenbrainz/ + +USER daemon diff --git a/docker-compose.yml b/docker-compose.yml index 33957a32c6..71b4f9d464 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: - ./data/redis:/data web: build: . - command: uwsgi /code/docker/uwsgi.ini + command: uwsgi /code/listenbrainz-server/docker/uwsgi.ini volumes: - .:/code/listenbrainz-server - ./data/app:/data diff --git a/docker/uwsgi.ini b/docker/uwsgi.ini index 807d504309..6d742c2fe8 100644 --- a/docker/uwsgi.ini +++ b/docker/uwsgi.ini @@ -2,5 +2,6 @@ socket = 0.0.0.0:3031 module = manage callable = application -chdir = /code/ -processes = 20 +chdir = /code/listenbrainz-server +processes = 5 +enable-threads = true diff --git a/manage.py b/manage.py index e339203b87..e6b3949ab5 100644 --- a/manage.py +++ b/manage.py @@ -1,12 +1,15 @@ from __future__ import print_function import db from webserver import create_app, schedule_jobs +from werkzeug.wsgi import DispatcherMiddleware import subprocess import os import click import config from urlparse import urlsplit +application = DispatcherMiddleware(create_app()) + cli = click.Group() ADMIN_SQL_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'admin', 'sql') From 53da3c4b441906ca87be004c34b1b9c9f30e061d Mon Sep 17 00:00:00 2001 From: Robert Kaye Date: Mon, 27 Jun 2016 17:32:32 +0200 Subject: [PATCH 3/4] Improvements to dockerignore. Cleanup. --- .dockerignore | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.dockerignore b/.dockerignore index 61e214cb77..f23d94a938 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,8 +18,8 @@ pip-log.txt pip-delete-this-directory.txt # Application data -data -pgdata +/data +/pgdata # Backups and dumps /export/ diff --git a/Dockerfile b/Dockerfile index ba118d21c4..9a10eaa5f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends build-essential git \ redis-tools \ wget - + RUN mkdir /code RUN pip install uWSGI==2.0.13.1 From 6917d6c21373a5aeb6fe25d7b74ddcf8fe2b0d23 Mon Sep 17 00:00:00 2001 From: Robert Kaye Date: Mon, 27 Jun 2016 18:23:58 +0200 Subject: [PATCH 4/4] Undoing some dockerignore changes. Not sure why it behaves strangely --- .dockerignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index f23d94a938..61e214cb77 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,8 +18,8 @@ pip-log.txt pip-delete-this-directory.txt # Application data -/data -/pgdata +data +pgdata # Backups and dumps /export/