First successful deployment

This commit is contained in:
ServerServeIonicNonServe 2018-08-12 13:21:40 +00:00
parent f3e6a53cfd
commit c5691f5e88
6 changed files with 40 additions and 113 deletions

View file

@ -1,4 +1,4 @@
# Original file from: https://github.com/dockerfiles/django-uwsgi-nginx # Original file from: https://github.com/appfiles/django-uwsgi-nginx
# Copyright 2013 Thatcher Peskens # Copyright 2013 Thatcher Peskens
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@ -15,34 +15,31 @@
FROM alpine:3.8 FROM alpine:3.8
MAINTAINER Dockerfiles MAINTAINER Claudio Maggioni (praticamentetilde)
# Install required packages and remove the apt packages cache when done. RUN addgroup -S app && adduser -S -G app app
RUN apk add -y # Install required packages and remove the apt packages cache when done
RUN apk update && apk add \
uwsgi \
py3-psycopg2 \
uwsgi-python3 \
git \ git \
python3 \ python3 \
python3-dev \ python3-dev
nginx \
supervisor \
pip3 install -U pip setuptools
# install uwsgi now because it takes a little while # COPY requirements.txt and RUN pip install BEFORE adding the rest of your
RUN pip3 install uwsgi # code, this will cause Docker's caching mechanism to prevent re-installing
# (all your) dependencies when you made a change a line or two in your app.
# setup all the configfiles COPY requirements.txt /home/app/code/
RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN pip3 install -r /home/app/code/requirements.txt
COPY nginx-app.conf /etc/nginx/sites-available/default
COPY supervisor-app.conf /etc/supervisor/conf.d/
# COPY requirements.txt and RUN pip install BEFORE adding the rest of your code, this will cause Docker's caching mechanism
# to prevent re-installing (all your) dependencies when you made a change a line or two in your app.
COPY requirements.txt /home/docker/code/
RUN pip3 install -r /home/docker/code/requirements.txt
# add (the rest of) our code # add (the rest of) our code
COPY . /home/docker/code/ COPY . /home/app/code/
EXPOSE 80 RUN chown -R app: /home/app
CMD ["supervisord", "-n"]
EXPOSE 8000
CMD ["/usr/sbin/uwsgi", "--ini", "/home/app/code/uwsgi.ini", "--plugin", "python3"]
USER app

View file

@ -20,12 +20,12 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'x7umjf5-9w*9iqb6p+9dy+7%66p=1xau+6kieblqvft*o=@)p#' SECRET_KEY = os.environ["SECURITY_KEY"]
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = os.environ["DEBUG"] == "true"
ALLOWED_HOSTS = [] ALLOWED_HOSTS = os.environ["ALLOWED_HOSTS"].split()
AUTH_USER_MODEL = 'user.CounterUser' AUTH_USER_MODEL = 'user.CounterUser'
@ -48,7 +48,7 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django_extensions' # 'django_extensions'
] ]
MIDDLEWARE = [ MIDDLEWARE = [
@ -89,10 +89,10 @@ WSGI_APPLICATION = 'arrowcounter.wsgi.application'
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.postgresql', 'ENGINE': 'django.db.backends.postgresql',
'NAME': 'arrowcounter', 'NAME': os.environ["POSTGRES_DB"],
'USER': 'arrowcounter', 'USER': os.environ["POSTGRES_USER"],
'PASSWORD': 'password', 'PASSWORD': os.environ["POSTGRES_PASSWORD"],
'HOST': 'localhost', 'HOST': os.environ["POSTGRES_HOST"],
} }
} }

View file

@ -1,36 +0,0 @@
# nginx-app.conf
# the upstream component nginx needs to connect to
upstream django {
server unix:/home/docker/code/app.sock; # for a file socket
# server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on, default_server indicates that this server block
# is the block to use if no blocks match the server_name
listen 80 default_server;
# the domain name it will serve for
server_name .example.com; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /home/docker/persistent/media; # your Django project's media files - amend as required
}
location /static {
alias /home/docker/volatile/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /home/docker/code/uwsgi_params; # the uwsgi_params file you installed
}
}

View file

@ -1,5 +0,0 @@
[program:app-uwsgi]
command = /usr/local/bin/uwsgi --ini /home/docker/code/uwsgi.ini
[program:nginx-app]
command = /usr/sbin/nginx

View file

@ -1,31 +1,18 @@
[uwsgi] [uwsgi]
# this config will be loaded if nothing specific is specified # chdir to the folder of this config file
# load base config from below chdir = %d/
ini = :base
# %d is the dir this configuration file is in # load Django's wsgi.py for this application
socket = %dapp.sock module = arrowcounter.wsgi:application
# serve static files under app static dirs
static-map2 = /static=%d/counter
static-map2 = /static=%d/user
static-expires = /* 7776000
offload-threads = %k
socket = 0.0.0.0:8000
master = true master = true
processes = 4 processes = 4
[dev]
ini = :base
# socket (uwsgi) is not the same as http, nor http-socket
socket = :8001
[local]
ini = :base
http = :8000
# set the virtual env to use
home=/Users/you/envs/env
[base]
# chdir to the folder of this config file, plus app/website
chdir = %d/
# load the module from wsgi.py, it is a python path from
# the directory above.
module=website.wsgi:application
# allow anyone to connect to the socket. This is very permissive
chmod-socket=666

View file

@ -1,16 +0,0 @@
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;