mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2024-11-22 01:26:57 +03:00
Big reorganization of documentation
This commit is contained in:
parent
904d2d50fe
commit
275f7eee14
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -24,6 +24,7 @@ sftp-config.json
|
|||
*.pot
|
||||
*.pyc
|
||||
.idea
|
||||
_build
|
||||
|
||||
# Project Specific Stuff
|
||||
local_settings.py
|
||||
|
|
|
@ -125,9 +125,12 @@ Now take a look at your repo. Don't forget to carefully look at the generated RE
|
|||
|
||||
For development, see the following for local development:
|
||||
|
||||
* Developing locally
|
||||
* `Developing locally`_
|
||||
* Developing locally using docker
|
||||
|
||||
.. _`Developing locally`: http://cookiecutter-django.readthedocs.org/en/latest/developing-locally.html
|
||||
.. _`Developing locally using docker`: http://cookiecutter-django.readthedocs.org/en/latest/developing-locally-docker.html
|
||||
|
||||
For Readers of Two Scoops of Django 1.8
|
||||
--------------------------------------------
|
||||
|
||||
|
|
34
docs/deployment-on-heroku.rst
Normal file
34
docs/deployment-on-heroku.rst
Normal file
|
@ -0,0 +1,34 @@
|
|||
Deployment on Heroku
|
||||
====================
|
||||
|
||||
You can either push the 'deploy' button in your generated README.rst or run these commands to deploy the project to Heroku:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
heroku create --buildpack https://github.com/heroku/heroku-buildpack-python
|
||||
|
||||
heroku addons:create heroku-postgresql:hobby-dev
|
||||
heroku pg:backups schedule --at '02:00 America/Los_Angeles' DATABASE_URL
|
||||
heroku pg:promote DATABASE_URL
|
||||
|
||||
heroku addons:create heroku-redis:hobby-dev
|
||||
heroku addons:create mailgun
|
||||
|
||||
heroku config:set DJANGO_SECRET_KEY=`openssl rand -base64 32`
|
||||
heroku config:set DJANGO_SETTINGS_MODULE='config.settings.production'
|
||||
heroku config:set DJANGO_ALLOWED_HOSTS='.herokuapp.com'
|
||||
|
||||
heroku config:set DJANGO_AWS_ACCESS_KEY_ID=YOUR_AWS_ID_HERE
|
||||
heroku config:set DJANGO_AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY_HERE
|
||||
heroku config:set DJANGO_AWS_STORAGE_BUCKET_NAME=YOUR_AWS_S3_BUCKET_NAME_HERE
|
||||
|
||||
heroku config:set DJANGO_MAILGUN_SERVER_NAME=YOUR_MALGUN_SERVER
|
||||
heroku config:set DJANGO_MAILGUN_API_KEY=YOUR_MAILGUN_API_KEY
|
||||
|
||||
heroku config:set PYTHONHASHSEED=random
|
||||
|
||||
git push heroku master
|
||||
heroku run python manage.py migrate
|
||||
heroku run python manage.py check --deploy
|
||||
heroku run python manage.py createsuperuser
|
||||
heroku open
|
110
docs/deployment-with-docker.rst
Normal file
110
docs/deployment-with-docker.rst
Normal file
|
@ -0,0 +1,110 @@
|
|||
Deployment with Docker
|
||||
=================================================
|
||||
|
||||
TODO: Review and revise
|
||||
|
||||
**Warning**
|
||||
|
||||
Docker is evolving extremely fast, but it has still some rough edges here and there. Compose is currently (as of version 1.4)
|
||||
not considered production ready. That means you won't be able to scale to multiple servers and you won't be able to run
|
||||
zero downtime deployments out of the box. Consider all this as experimental until you understand all the implications
|
||||
to run docker (with compose) on production.
|
||||
|
||||
**Run your app with docker-compose**
|
||||
|
||||
Prerequisites:
|
||||
|
||||
* docker (tested with 1.8)
|
||||
* docker-compose (tested with 0.4)
|
||||
|
||||
Before you start, check out the `docker-compose.yml` file in the root of this project. This is where each component
|
||||
of this application gets its configuration from. It consists of a `postgres` service that runs the database, `redis`
|
||||
for caching, `nginx` as reverse proxy and last but not least the `django` application run by gunicorn.
|
||||
{% if cookiecutter.use_celery == 'y' -%}
|
||||
Since this application also runs Celery, there are two more services with a service called `celeryworker` that runs the
|
||||
celery worker process and `celerybeat` that runs the celery beat process.
|
||||
{% endif %}
|
||||
|
||||
|
||||
All of these services except `redis` rely on environment variables set by you. There is an `env.example` file in the
|
||||
root directory of this project as a starting point. Add your own variables to the file and rename it to `.env`. This
|
||||
file won't be tracked by git by default so you'll have to make sure to use some other mechanism to copy your secret if
|
||||
you are relying solely on git.
|
||||
|
||||
|
||||
By default, the application is configured to listen on all interfaces on port 80. If you want to change that, open the
|
||||
`docker-compose.yml` file and replace `0.0.0.0` with your own ip. If you are using `nginx-proxy`_ to run multiple
|
||||
application stacks on one host, remove the port setting entirely and add `VIRTUAL_HOST={{cookiecutter.domain_name}}` to your env file.
|
||||
This pass all incoming requests on `nginx-proxy`_ to the nginx service your application is using.
|
||||
|
||||
.. _nginx-proxy: https://github.com/jwilder/nginx-proxy
|
||||
|
||||
Postgres is saving its database files to `/data/{{cookiecutter.repo_name}}/postgres` by default. Change that if you wan't
|
||||
something else and make sure to make backups since this is not done automatically.
|
||||
|
||||
To get started, pull your code from source control (don't forget the `.env` file) and change to your projects root
|
||||
directory.
|
||||
|
||||
You'll need to build the stack first. To do that, run::
|
||||
|
||||
docker-compose build
|
||||
|
||||
Once this is ready, you can run it with::
|
||||
|
||||
docker-compose up
|
||||
|
||||
|
||||
To run a migration, open up a second terminal and run::
|
||||
|
||||
docker-compose run django python manage.py migrate
|
||||
|
||||
To create a superuser, run::
|
||||
|
||||
docker-compose run django python manage.py createsuperuser
|
||||
|
||||
|
||||
If you need a shell, run::
|
||||
|
||||
docker-compose run django python manage.py shell_plus
|
||||
|
||||
To get an output of all running containers.
|
||||
|
||||
To check your logs, run::
|
||||
|
||||
docker-compose logs
|
||||
|
||||
If you want to scale your application, run::
|
||||
|
||||
docker-compose scale django=4
|
||||
docker-compose scale celeryworker=2
|
||||
|
||||
|
||||
**Don't run the scale command on postgres or celerybeat**
|
||||
|
||||
Once you are ready with your initial setup, you wan't to make sure that your application is run by a process manager to
|
||||
survive reboots and auto restarts in case of an error. You can use the process manager you are most familiar with. All
|
||||
it needs to do is to run `docker-compose up` in your projects root directory.
|
||||
|
||||
If you are using `supervisor`, you can use this file as a starting point::
|
||||
|
||||
[program:{{cookiecutter.repo_name}}]
|
||||
command=docker-compose up
|
||||
directory=/path/to/{{cookiecutter.repo_name}}
|
||||
redirect_stderr=true
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=10
|
||||
|
||||
|
||||
Place it in `/etc/supervisor/conf.d/{{cookiecutter.repo_name}}.conf` and run::
|
||||
|
||||
supervisorctl reread
|
||||
supervisorctl start {{cookiecutter.repo_name}}
|
||||
|
||||
To get the status, run::
|
||||
|
||||
supervisorctl status
|
||||
|
||||
If you have errors, you can always check your stack with `docker-compose`. Switch to your projects root directory and run::
|
||||
|
||||
docker-compose ps
|
|
@ -15,6 +15,11 @@ Contents:
|
|||
|
||||
developing-locally
|
||||
developing-locally-docker
|
||||
settings
|
||||
linters
|
||||
live-reloading-and-sass-compilation
|
||||
deployment-on-heroku
|
||||
deployment-with-docker
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
|
4
docs/linters.rst
Normal file
4
docs/linters.rst
Normal file
|
@ -0,0 +1,4 @@
|
|||
Linters
|
||||
=======
|
||||
|
||||
TODO
|
24
docs/live-reloading-and-sass-compilation.rst
Normal file
24
docs/live-reloading-and-sass-compilation.rst
Normal file
|
@ -0,0 +1,24 @@
|
|||
Live reloading and Sass CSS compilation
|
||||
=======================================
|
||||
|
||||
If you'd like to take advantage of live reloading and Sass / Compass CSS compilation you can do so with a little bit of prep work.
|
||||
|
||||
Make sure that nodejs_ is installed. Then in the project root run::
|
||||
|
||||
$ npm install
|
||||
|
||||
.. _nodejs: http://nodejs.org/download/
|
||||
|
||||
If you don't already have it, install `compass` (doesn't hurt if you run this command twice)::
|
||||
|
||||
gem install compass
|
||||
|
||||
Now you just need::
|
||||
|
||||
$ grunt serve
|
||||
|
||||
The base app will now run as it would with the usual ``manage.py runserver`` but with live reloading and Sass compilation enabled.
|
||||
|
||||
To get live reloading to work you'll probably need to install an `appropriate browser extension`_
|
||||
|
||||
.. _appropriate browser extension: http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions-
|
42
docs/settings.rst
Normal file
42
docs/settings.rst
Normal file
|
@ -0,0 +1,42 @@
|
|||
Settings
|
||||
==========
|
||||
|
||||
This project relies extensively on environment settings which **will not work with Apache/mod_wsgi setups**. It has been deployed successfully with both Gunicorn/Nginx and even uWSGI/Nginx.
|
||||
|
||||
For configuration purposes, the following table maps environment variables to their Django setting:
|
||||
|
||||
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
Environment Variable Django Setting Development Default Production Default
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
DJANGO_CACHES CACHES (default) locmem redis
|
||||
DJANGO_DATABASES DATABASES (default) See code See code
|
||||
DJANGO_DEBUG DEBUG True False
|
||||
DJANGO_SECRET_KEY SECRET_KEY CHANGEME!!! raises error
|
||||
DJANGO_SECURE_BROWSER_XSS_FILTER SECURE_BROWSER_XSS_FILTER n/a True
|
||||
DJANGO_SECURE_SSL_REDIRECT SECURE_SSL_REDIRECT n/a True
|
||||
DJANGO_SECURE_CONTENT_TYPE_NOSNIFF SECURE_CONTENT_TYPE_NOSNIFF n/a True
|
||||
DJANGO_SECURE_FRAME_DENY SECURE_FRAME_DENY n/a True
|
||||
DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS HSTS_INCLUDE_SUBDOMAINS n/a True
|
||||
DJANGO_SESSION_COOKIE_HTTPONLY SESSION_COOKIE_HTTPONLY n/a True
|
||||
DJANGO_SESSION_COOKIE_SECURE SESSION_COOKIE_SECURE n/a False
|
||||
DJANGO_DEFAULT_FROM_EMAIL DEFAULT_FROM_EMAIL n/a "your_project_name <noreply@your_domain_name>"
|
||||
DJANGO_SERVER_EMAIL SERVER_EMAIL n/a "your_project_name <noreply@your_domain_name>"
|
||||
DJANGO_EMAIL_SUBJECT_PREFIX EMAIL_SUBJECT_PREFIX n/a "[your_project_name] "
|
||||
DJANGO_ALLOWED_HOSTS ALLOWED_HOSTS ['*'] ['your_project_name}']
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
|
||||
The following table lists settings and their defaults for third-party applications, which may or may be part of your project:
|
||||
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
Environment Variable Django Setting Development Default Production Default
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID n/a raises error
|
||||
DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY n/a raises error
|
||||
DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME n/a raises error
|
||||
DJANGO_SENTRY_DSN SENTRY_DSN n/a raises error
|
||||
DJANGO_SENTRY_CLIENT SENTRY_CLIENT n/a raven.contrib.django.raven_compat.DjangoClient
|
||||
DJANGO_SENTRY_LOG_LEVEL SENTRY_LOG_LEVEL n/a logging.INFO
|
||||
DJANGO_MAILGUN_API_KEY MAILGUN_ACCESS_KEY n/a raises error
|
||||
DJANGO_MAILGUN_SERVER_NAME MAILGUN_SERVER_NAME n/a raises error
|
||||
======================================= =========================== ============================================== ======================================================================
|
|
@ -9,76 +9,12 @@ LICENSE: BSD
|
|||
Settings
|
||||
------------
|
||||
|
||||
{{cookiecutter.project_name}} relies extensively on environment settings which **will not work with Apache/mod_wsgi setups**. It has been deployed successfully with both Gunicorn/Nginx and even uWSGI/Nginx.
|
||||
Moved to settings_.
|
||||
|
||||
For configuration purposes, the following table maps the '{{cookiecutter.project_name}}' environment variables to their Django setting:
|
||||
.. _settings: http://cookiecutter-django.readthedocs.org/en/latest/settings.html
|
||||
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
Environment Variable Django Setting Development Default Production Default
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
DJANGO_CACHES CACHES (default) locmem redis
|
||||
DJANGO_DATABASES DATABASES (default) See code See code
|
||||
DJANGO_DEBUG DEBUG True False
|
||||
DJANGO_SECRET_KEY SECRET_KEY CHANGEME!!! raises error
|
||||
DJANGO_SECURE_BROWSER_XSS_FILTER SECURE_BROWSER_XSS_FILTER n/a True
|
||||
DJANGO_SECURE_SSL_REDIRECT SECURE_SSL_REDIRECT n/a True
|
||||
DJANGO_SECURE_CONTENT_TYPE_NOSNIFF SECURE_CONTENT_TYPE_NOSNIFF n/a True
|
||||
DJANGO_SECURE_FRAME_DENY SECURE_FRAME_DENY n/a True
|
||||
DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS HSTS_INCLUDE_SUBDOMAINS n/a True
|
||||
DJANGO_SESSION_COOKIE_HTTPONLY SESSION_COOKIE_HTTPONLY n/a True
|
||||
DJANGO_SESSION_COOKIE_SECURE SESSION_COOKIE_SECURE n/a False
|
||||
DJANGO_DEFAULT_FROM_EMAIL DEFAULT_FROM_EMAIL n/a "{{cookiecutter.project_name}} <noreply@{{cookiecutter.domain_name}}>"
|
||||
DJANGO_SERVER_EMAIL SERVER_EMAIL n/a "{{cookiecutter.project_name}} <noreply@{{cookiecutter.domain_name}}>"
|
||||
DJANGO_EMAIL_SUBJECT_PREFIX EMAIL_SUBJECT_PREFIX n/a "[{{cookiecutter.project_name}}] "
|
||||
DJANGO_ALLOWED_HOSTS ALLOWED_HOSTS ['*'] ['{{cookiecutter.domain_name}}']
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
|
||||
The following table lists settings and their defaults for third-party applications:
|
||||
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
Environment Variable Django Setting Development Default Production Default
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID n/a raises error
|
||||
DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY n/a raises error
|
||||
DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME n/a raises error
|
||||
{% if cookiecutter.use_sentry == "y" -%}DJANGO_SENTRY_DSN SENTRY_DSN n/a raises error
|
||||
DJANGO_SENTRY_CLIENT SENTRY_CLIENT n/a raven.contrib.django.raven_compat.DjangoClient
|
||||
DJANGO_SENTRY_LOG_LEVEL SENTRY_LOG_LEVEL n/a logging.INFO{%- endif %}
|
||||
DJANGO_MAILGUN_API_KEY MAILGUN_ACCESS_KEY n/a raises error
|
||||
DJANGO_MAILGUN_SERVER_NAME MAILGUN_SERVER_NAME n/a raises error
|
||||
======================================= =========================== ============================================== ======================================================================
|
||||
|
||||
Getting up and running
|
||||
----------------------
|
||||
|
||||
Basics
|
||||
^^^^^^
|
||||
|
||||
The steps below will get you up and running with a local development environment. We assume you have the following installed:
|
||||
|
||||
* pip
|
||||
* virtualenv
|
||||
* PostgreSQL
|
||||
|
||||
First make sure to create and activate a virtualenv_, then open a terminal at the project root and install the requirements for local development::
|
||||
|
||||
$ pip install -r requirements/local.txt
|
||||
|
||||
.. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
|
||||
|
||||
Create a local PostgreSQL database::
|
||||
|
||||
$ createdb {{ cookiecutter.repo_name }}
|
||||
|
||||
Run ``migrate`` on your new database::
|
||||
|
||||
$ python manage.py migrate
|
||||
|
||||
You can now run the ``runserver_plus`` command::
|
||||
|
||||
$ python manage.py runserver_plus
|
||||
|
||||
Open up your browser to http://127.0.0.1:8000/ to see the site running locally.
|
||||
Basic Commands
|
||||
--------------
|
||||
|
||||
Setting Up Your Users
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -103,27 +39,9 @@ To run the tests, check your test coverage, and generate an HTML coverage report
|
|||
Live reloading and Sass CSS compilation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you'd like to take advantage of live reloading and Sass / Compass CSS compilation you can do so with a little bit of prep work.
|
||||
Moved to `Live reloading and SASS compilation`_.
|
||||
|
||||
Make sure that nodejs_ is installed. Then in the project root run::
|
||||
|
||||
$ npm install
|
||||
|
||||
.. _nodejs: http://nodejs.org/download/
|
||||
|
||||
If you don't already have it, install `compass` (doesn't hurt if you run this command twice)::
|
||||
|
||||
gem install compass
|
||||
|
||||
Now you just need::
|
||||
|
||||
$ grunt serve
|
||||
|
||||
The base app will now run as it would with the usual ``manage.py runserver`` but with live reloading and Sass compilation enabled.
|
||||
|
||||
To get live reloading to work you'll probably need to install an `appropriate browser extension`_
|
||||
|
||||
.. _appropriate browser extension: http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions-
|
||||
.. _`Live reloading and SASS compilation`: http://cookiecutter-django.readthedocs.org/en/latest/live-reloading-and-sass-compilation.html
|
||||
|
||||
{% if cookiecutter.use_celery == "y" %}
|
||||
|
||||
|
@ -218,143 +136,13 @@ Heroku
|
|||
.. image:: https://www.herokucdn.com/deploy/button.png
|
||||
:target: https://heroku.com/deploy
|
||||
|
||||
Run these commands to deploy the project to Heroku:
|
||||
See detailed `cookiecutter-django Heroku documentation`_.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
heroku create --buildpack https://github.com/heroku/heroku-buildpack-python
|
||||
|
||||
heroku addons:create heroku-postgresql:hobby-dev
|
||||
heroku pg:backups schedule --at '02:00 America/Los_Angeles' DATABASE_URL
|
||||
heroku pg:promote DATABASE_URL
|
||||
|
||||
heroku addons:create heroku-redis:hobby-dev
|
||||
heroku addons:create mailgun
|
||||
|
||||
heroku config:set DJANGO_SECRET_KEY=`openssl rand -base64 32`
|
||||
heroku config:set DJANGO_SETTINGS_MODULE='config.settings.production'
|
||||
heroku config:set DJANGO_ALLOWED_HOSTS='.herokuapp.com'
|
||||
|
||||
heroku config:set DJANGO_AWS_ACCESS_KEY_ID=YOUR_AWS_ID_HERE
|
||||
heroku config:set DJANGO_AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY_HERE
|
||||
heroku config:set DJANGO_AWS_STORAGE_BUCKET_NAME=YOUR_AWS_S3_BUCKET_NAME_HERE
|
||||
|
||||
heroku config:set DJANGO_MAILGUN_SERVER_NAME=YOUR_MALGUN_SERVER
|
||||
heroku config:set DJANGO_MAILGUN_API_KEY=YOUR_MAILGUN_API_KEY
|
||||
|
||||
heroku config:set PYTHONHASHSEED=random
|
||||
|
||||
git push heroku master
|
||||
heroku run python manage.py migrate
|
||||
heroku run python manage.py check --deploy
|
||||
heroku run python manage.py createsuperuser
|
||||
heroku open
|
||||
.. _`cookiecutter-django Heroku documentation`: http://cookiecutter-django.readthedocs.org/en/latest/deployment-on-heroku.html
|
||||
|
||||
Docker
|
||||
^^^^^^
|
||||
|
||||
**Warning**
|
||||
See detailed `cookiecutter-django Docker documentation`_.
|
||||
|
||||
Docker is evolving extremely fast, but it has still some rough edges here and there. Compose is currently (as of version 1.4)
|
||||
not considered production ready. That means you won't be able to scale to multiple servers and you won't be able to run
|
||||
zero downtime deployments out of the box. Consider all this as experimental until you understand all the implications
|
||||
to run docker (with compose) on production.
|
||||
|
||||
**Run your app with docker-compose**
|
||||
|
||||
Prerequisites:
|
||||
|
||||
* docker (tested with 1.8)
|
||||
* docker-compose (tested with 0.4)
|
||||
|
||||
Before you start, check out the `docker-compose.yml` file in the root of this project. This is where each component
|
||||
of this application gets its configuration from. It consists of a `postgres` service that runs the database, `redis`
|
||||
for caching, `nginx` as reverse proxy and last but not least the `django` application run by gunicorn.
|
||||
{% if cookiecutter.use_celery == 'y' -%}
|
||||
Since this application also runs Celery, there are two more services with a service called `celeryworker` that runs the
|
||||
celery worker process and `celerybeat` that runs the celery beat process.
|
||||
{% endif %}
|
||||
|
||||
|
||||
All of these services except `redis` rely on environment variables set by you. There is an `env.example` file in the
|
||||
root directory of this project as a starting point. Add your own variables to the file and rename it to `.env`. This
|
||||
file won't be tracked by git by default so you'll have to make sure to use some other mechanism to copy your secret if
|
||||
you are relying solely on git.
|
||||
|
||||
|
||||
By default, the application is configured to listen on all interfaces on port 80. If you want to change that, open the
|
||||
`docker-compose.yml` file and replace `0.0.0.0` with your own ip. If you are using `nginx-proxy`_ to run multiple
|
||||
application stacks on one host, remove the port setting entirely and add `VIRTUAL_HOST={{cookiecutter.domain_name}}` to your env file.
|
||||
This pass all incoming requests on `nginx-proxy` to the nginx service your application is using.
|
||||
|
||||
.. _nginx-proxy: https://github.com/jwilder/nginx-proxy
|
||||
|
||||
Postgres is saving its database files to `/data/{{cookiecutter.repo_name}}/postgres` by default. Change that if you wan't
|
||||
something else and make sure to make backups since this is not done automatically.
|
||||
|
||||
To get started, pull your code from source control (don't forget the `.env` file) and change to your projects root
|
||||
directory.
|
||||
|
||||
You'll need to build the stack first. To do that, run::
|
||||
|
||||
docker-compose build
|
||||
|
||||
Once this is ready, you can run it with::
|
||||
|
||||
docker-compose up
|
||||
|
||||
|
||||
To run a migration, open up a second terminal and run::
|
||||
|
||||
docker-compose run django python manage.py migrate
|
||||
|
||||
To create a superuser, run::
|
||||
|
||||
docker-compose run django python manage.py createsuperuser
|
||||
|
||||
|
||||
If you need a shell, run::
|
||||
|
||||
docker-compose run django python manage.py shell_plus
|
||||
|
||||
To get an output of all running containers.
|
||||
|
||||
To check your logs, run::
|
||||
|
||||
docker-compose logs
|
||||
|
||||
If you want to scale your application, run::
|
||||
|
||||
docker-compose scale django=4
|
||||
docker-compose scale celeryworker=2
|
||||
|
||||
|
||||
**Don't run the scale command on postgres or celerybeat**
|
||||
|
||||
Once you are ready with your initial setup, you wan't to make sure that your application is run by a process manager to
|
||||
survive reboots and auto restarts in case of an error. You can use the process manager you are most familiar with. All
|
||||
it needs to do is to run `docker-compose up` in your projects root directory.
|
||||
|
||||
If you are using `supervisor`, you can use this file as a starting point::
|
||||
|
||||
[program:{{cookiecutter.repo_name}}]
|
||||
command=docker-compose up
|
||||
directory=/path/to/{{cookiecutter.repo_name}}
|
||||
redirect_stderr=true
|
||||
autostart=true
|
||||
autorestart=true
|
||||
priority=10
|
||||
|
||||
|
||||
Place it in `/etc/supervisor/conf.d/{{cookiecutter.repo_name}}.conf` and run::
|
||||
|
||||
supervisorctl reread
|
||||
supervisorctl start {{cookiecutter.repo_name}}
|
||||
|
||||
To get the status, run::
|
||||
|
||||
supervisorctl status
|
||||
|
||||
If you have errors, you can always check your stack with `docker-compose`. Switch to your projects root directory and run::
|
||||
|
||||
docker-compose ps
|
||||
.. _`cookiecutter-django Docker documentation`: http://cookiecutter-django.readthedocs.org/en/latest/deployment-with-docker.html
|
||||
|
|
Loading…
Reference in New Issue
Block a user