Added docker deployment files
This commit is contained in:
parent
d41dab6051
commit
f3e6a53cfd
6 changed files with 137 additions and 0 deletions
48
Dockerfile
Normal file
48
Dockerfile
Normal file
|
@ -0,0 +1,48 @@
|
|||
# Original file from: https://github.com/dockerfiles/django-uwsgi-nginx
|
||||
# Copyright 2013 Thatcher Peskens
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
FROM alpine:3.8
|
||||
|
||||
MAINTAINER Dockerfiles
|
||||
|
||||
# Install required packages and remove the apt packages cache when done.
|
||||
|
||||
RUN apk add -y
|
||||
git \
|
||||
python3 \
|
||||
python3-dev \
|
||||
nginx \
|
||||
supervisor \
|
||||
pip3 install -U pip setuptools
|
||||
|
||||
# install uwsgi now because it takes a little while
|
||||
RUN pip3 install uwsgi
|
||||
|
||||
# setup all the configfiles
|
||||
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
|
||||
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
|
||||
COPY . /home/docker/code/
|
||||
|
||||
EXPOSE 80
|
||||
CMD ["supervisord", "-n"]
|
36
nginx-app.conf
Normal file
36
nginx-app.conf
Normal file
|
@ -0,0 +1,36 @@
|
|||
# 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
|
||||
}
|
||||
}
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
|
@ -0,0 +1 @@
|
|||
django
|
5
supervisor-app.conf
Normal file
5
supervisor-app.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
[program:app-uwsgi]
|
||||
command = /usr/local/bin/uwsgi --ini /home/docker/code/uwsgi.ini
|
||||
|
||||
[program:nginx-app]
|
||||
command = /usr/sbin/nginx
|
31
uwsgi.ini
Normal file
31
uwsgi.ini
Normal file
|
@ -0,0 +1,31 @@
|
|||
[uwsgi]
|
||||
# this config will be loaded if nothing specific is specified
|
||||
# load base config from below
|
||||
ini = :base
|
||||
|
||||
# %d is the dir this configuration file is in
|
||||
socket = %dapp.sock
|
||||
master = true
|
||||
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
|
16
uwsgi_params
Normal file
16
uwsgi_params
Normal file
|
@ -0,0 +1,16 @@
|
|||
|
||||
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;
|
Loading…
Reference in a new issue