From 32f303f619c63fa53e8be60e24ca5a9836eb8066 Mon Sep 17 00:00:00 2001 From: Emile Petrone Date: Sun, 20 May 2018 12:37:36 -0400 Subject: [PATCH 01/69] Added documentation for Docker deployment in detached mode --- docs/deployment-with-docker.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/deployment-with-docker.rst b/docs/deployment-with-docker.rst index 90f2fa5c0..de0026a60 100644 --- a/docs/deployment-with-docker.rst +++ b/docs/deployment-with-docker.rst @@ -84,6 +84,10 @@ Once this is ready, you can run it with:: docker-compose -f production.yml up +To run the stack and detach the containers, run:: + + docker-compose -f production.yml up -d + To run a migration, open up a second terminal and run:: docker-compose -f production.yml run --rm django python manage.py migrate From 820e3540da9638ed41c380c7d80324f942c00c54 Mon Sep 17 00:00:00 2001 From: Nikita Shupeyko Date: Mon, 21 May 2018 12:44:38 +0300 Subject: [PATCH 02/69] Upgrade Caddy to 0.11 and pin its version to minor rather than patch (#1653) --- .../compose/production/caddy/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/compose/production/caddy/Dockerfile b/{{cookiecutter.project_slug}}/compose/production/caddy/Dockerfile index d02f0342d..8cbbf1df7 100644 --- a/{{cookiecutter.project_slug}}/compose/production/caddy/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/production/caddy/Dockerfile @@ -1,3 +1,3 @@ -FROM abiosoft/caddy:0.10.6 +FROM abiosoft/caddy:0.11 COPY ./compose/production/caddy/Caddyfile /etc/Caddyfile From 9b938647b44142a329e0e3daaf1c99ce202d55d8 Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Mon, 21 May 2018 14:59:20 +0300 Subject: [PATCH 03/69] Refactor exec "$@" in django entrypoint.sh --- .../compose/production/django/entrypoint.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh b/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh index 74242bde4..ddf096aa7 100644 --- a/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh +++ b/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh @@ -5,8 +5,6 @@ set -o pipefail set -o nounset -cmd="$@" - # N.B. If only .env files supported variable expansion... export CELERY_BROKER_URL="${REDIS_URL}" @@ -44,4 +42,4 @@ done >&2 echo 'PostgreSQL is up - continuing...' -exec $cmd +exec "$@" From 90953a83f202ddd3a6fa3b7cd58db6a32facbf69 Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Mon, 21 May 2018 15:03:37 +0300 Subject: [PATCH 04/69] Alter django entrypoint.sh output --- .../compose/production/django/entrypoint.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh b/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh index ddf096aa7..4845e343b 100644 --- a/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh +++ b/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh @@ -34,12 +34,10 @@ sys.exit(0) END } - until postgres_ready; do - >&2 echo 'PostgreSQL is unavailable (sleeping)...' + >&2 echo 'Waiting for PostgreSQL to become available...' sleep 1 done - ->&2 echo 'PostgreSQL is up - continuing...' +>&2 echo 'PostgreSQL is available' exec "$@" From 849f64e1a52d5d0c1db768a9cd31b10a6e9db414 Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Mon, 14 May 2018 10:28:50 +0300 Subject: [PATCH 05/69] Remove .sh ext from executable scripts --- .../compose/local/django/Dockerfile | 26 ++++++++-------- .../compose/local/django/celery/beat/start.sh | 10 ------- .../local/django/celery/worker/start.sh | 9 ------ .../compose/local/django/start.sh | 10 ------- .../compose/production/django/Dockerfile | 30 +++++++++---------- .../django/celery/beat/{start.sh => start} | 0 .../django/celery/worker/{start.sh => start} | 0 .../django/{entrypoint.sh => entrypoint} | 0 .../django/{gunicorn.sh => gunicorn} | 0 {{cookiecutter.project_slug}}/local.yml | 6 ++-- {{cookiecutter.project_slug}}/production.yml | 6 ++-- 11 files changed, 34 insertions(+), 63 deletions(-) delete mode 100644 {{cookiecutter.project_slug}}/compose/local/django/celery/beat/start.sh delete mode 100644 {{cookiecutter.project_slug}}/compose/local/django/celery/worker/start.sh delete mode 100644 {{cookiecutter.project_slug}}/compose/local/django/start.sh rename {{cookiecutter.project_slug}}/compose/production/django/celery/beat/{start.sh => start} (100%) rename {{cookiecutter.project_slug}}/compose/production/django/celery/worker/{start.sh => start} (100%) rename {{cookiecutter.project_slug}}/compose/production/django/{entrypoint.sh => entrypoint} (100%) rename {{cookiecutter.project_slug}}/compose/production/django/{gunicorn.sh => gunicorn} (100%) diff --git a/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile index 3e3691d00..df9561f71 100644 --- a/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile @@ -19,22 +19,22 @@ RUN apk update \ COPY ./requirements /requirements RUN pip install -r /requirements/local.txt -COPY ./compose/production/django/entrypoint.sh /entrypoint.sh -RUN sed -i 's/\r//' /entrypoint.sh -RUN chmod +x /entrypoint.sh +COPY ./compose/production/django/entrypoint /entrypoint +RUN sed -i 's/\r//' /entrypoint +RUN chmod +x /entrypoint -COPY ./compose/local/django/start.sh /start.sh -RUN sed -i 's/\r//' /start.sh -RUN chmod +x /start.sh +COPY ./compose/local/django/start /start +RUN sed -i 's/\r//' /start +RUN chmod +x /start {% if cookiecutter.use_celery == "y" %} -COPY ./compose/local/django/celery/worker/start.sh /start-celeryworker.sh -RUN sed -i 's/\r//' /start-celeryworker.sh -RUN chmod +x /start-celeryworker.sh +COPY ./compose/local/django/celery/worker/start /start-celeryworker +RUN sed -i 's/\r//' /start-celeryworker +RUN chmod +x /start-celeryworker -COPY ./compose/local/django/celery/beat/start.sh /start-celerybeat.sh -RUN sed -i 's/\r//' /start-celerybeat.sh -RUN chmod +x /start-celerybeat.sh +COPY ./compose/local/django/celery/beat/start /start-celerybeat +RUN sed -i 's/\r//' /start-celerybeat +RUN chmod +x /start-celerybeat {% endif %} WORKDIR /app -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["/entrypoint"] diff --git a/{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start.sh b/{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start.sh deleted file mode 100644 index 0ca8bb507..000000000 --- a/{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -o errexit -set -o pipefail -set -o nounset -set -o xtrace - - -rm -f './celerybeat.pid' -celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO diff --git a/{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start.sh b/{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start.sh deleted file mode 100644 index 4335340de..000000000 --- a/{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -set -o errexit -set -o pipefail -set -o nounset -set -o xtrace - - -celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO diff --git a/{{cookiecutter.project_slug}}/compose/local/django/start.sh b/{{cookiecutter.project_slug}}/compose/local/django/start.sh deleted file mode 100644 index 50227e19e..000000000 --- a/{{cookiecutter.project_slug}}/compose/local/django/start.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -o errexit -set -o pipefail -set -o nounset -set -o xtrace - - -python manage.py migrate -python manage.py runserver_plus 0.0.0.0:8000 diff --git a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile index e8d2e0fc2..04ac0d55e 100644 --- a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile @@ -19,23 +19,23 @@ COPY ./requirements /requirements RUN pip install --no-cache-dir -r /requirements/production.txt \ && rm -rf /requirements -COPY ./compose/production/django/gunicorn.sh /gunicorn.sh -RUN sed -i 's/\r//' /gunicorn.sh -RUN chmod +x /gunicorn.sh -RUN chown django /gunicorn.sh +COPY ./compose/production/django/gunicorn /gunicorn +RUN sed -i 's/\r//' /gunicorn +RUN chmod +x /gunicorn +RUN chown django /gunicorn -COPY ./compose/production/django/entrypoint.sh /entrypoint.sh -RUN sed -i 's/\r//' /entrypoint.sh -RUN chmod +x /entrypoint.sh -RUN chown django /entrypoint.sh +COPY ./compose/production/django/entrypoint /entrypoint +RUN sed -i 's/\r//' /entrypoint +RUN chmod +x /entrypoint +RUN chown django /entrypoint {% if cookiecutter.use_celery == "y" %} -COPY ./compose/production/django/celery/worker/start.sh /start-celeryworker.sh -RUN sed -i 's/\r//' /start-celeryworker.sh -RUN chmod +x /start-celeryworker.sh +COPY ./compose/production/django/celery/worker/start /start-celeryworker +RUN sed -i 's/\r//' /start-celeryworker +RUN chmod +x /start-celeryworker -COPY ./compose/production/django/celery/beat/start.sh /start-celerybeat.sh -RUN sed -i 's/\r//' /start-celerybeat.sh -RUN chmod +x /start-celerybeat.sh +COPY ./compose/production/django/celery/beat/start /start-celerybeat +RUN sed -i 's/\r//' /start-celerybeat +RUN chmod +x /start-celerybeat {% endif %} COPY . /app @@ -45,4 +45,4 @@ USER django WORKDIR /app -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["/entrypoint"] diff --git a/{{cookiecutter.project_slug}}/compose/production/django/celery/beat/start.sh b/{{cookiecutter.project_slug}}/compose/production/django/celery/beat/start similarity index 100% rename from {{cookiecutter.project_slug}}/compose/production/django/celery/beat/start.sh rename to {{cookiecutter.project_slug}}/compose/production/django/celery/beat/start diff --git a/{{cookiecutter.project_slug}}/compose/production/django/celery/worker/start.sh b/{{cookiecutter.project_slug}}/compose/production/django/celery/worker/start similarity index 100% rename from {{cookiecutter.project_slug}}/compose/production/django/celery/worker/start.sh rename to {{cookiecutter.project_slug}}/compose/production/django/celery/worker/start diff --git a/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh b/{{cookiecutter.project_slug}}/compose/production/django/entrypoint similarity index 100% rename from {{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh rename to {{cookiecutter.project_slug}}/compose/production/django/entrypoint diff --git a/{{cookiecutter.project_slug}}/compose/production/django/gunicorn.sh b/{{cookiecutter.project_slug}}/compose/production/django/gunicorn similarity index 100% rename from {{cookiecutter.project_slug}}/compose/production/django/gunicorn.sh rename to {{cookiecutter.project_slug}}/compose/production/django/gunicorn diff --git a/{{cookiecutter.project_slug}}/local.yml b/{{cookiecutter.project_slug}}/local.yml index d22a9d089..c725fff79 100644 --- a/{{cookiecutter.project_slug}}/local.yml +++ b/{{cookiecutter.project_slug}}/local.yml @@ -22,7 +22,7 @@ services: - ./.envs/.local/.postgres ports: - "8000:8000" - command: /start.sh + command: /start postgres: build: @@ -60,7 +60,7 @@ services: - ./.envs/.local/.django - ./.envs/.local/.postgres ports: [] - command: /start-celeryworker.sh + command: /start-celeryworker celerybeat: <<: *django @@ -75,6 +75,6 @@ services: - ./.envs/.local/.django - ./.envs/.local/.postgres ports: [] - command: /start-celerybeat.sh + command: /start-celerybeat {%- endif %} diff --git a/{{cookiecutter.project_slug}}/production.yml b/{{cookiecutter.project_slug}}/production.yml index f8f8ca22c..51c896275 100644 --- a/{{cookiecutter.project_slug}}/production.yml +++ b/{{cookiecutter.project_slug}}/production.yml @@ -17,7 +17,7 @@ services: env_file: - ./.envs/.production/.django - ./.envs/.production/.postgres - command: /gunicorn.sh + command: /gunicorn postgres: build: @@ -58,7 +58,7 @@ services: env_file: - ./.envs/.production/.django - ./.envs/.production/.postgres - command: /start-celeryworker.sh + command: /start-celeryworker celerybeat: <<: *django @@ -69,6 +69,6 @@ services: env_file: - ./.envs/.production/.django - ./.envs/.production/.postgres - command: /start-celerybeat.sh + command: /start-celerybeat {%- endif %} From cfff5b9d0866c8ec5dfc0a5a275a9d17f4ce1b3f Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Mon, 21 May 2018 15:34:28 +0300 Subject: [PATCH 06/69] Commit local django celery start scripts back --- .../compose/local/django/celery/beat/start | 10 ++++++++++ .../compose/local/django/celery/worker/start | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 {{cookiecutter.project_slug}}/compose/local/django/celery/beat/start create mode 100644 {{cookiecutter.project_slug}}/compose/local/django/celery/worker/start diff --git a/{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start b/{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start new file mode 100644 index 000000000..0ca8bb507 --- /dev/null +++ b/{{cookiecutter.project_slug}}/compose/local/django/celery/beat/start @@ -0,0 +1,10 @@ +#!/bin/sh + +set -o errexit +set -o pipefail +set -o nounset +set -o xtrace + + +rm -f './celerybeat.pid' +celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO diff --git a/{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start b/{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start new file mode 100644 index 000000000..4335340de --- /dev/null +++ b/{{cookiecutter.project_slug}}/compose/local/django/celery/worker/start @@ -0,0 +1,9 @@ +#!/bin/sh + +set -o errexit +set -o pipefail +set -o nounset +set -o xtrace + + +celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO From 4a1ea2fb458862e1e4e0704ad0659b6408b1c4bb Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Mon, 21 May 2018 15:39:12 +0300 Subject: [PATCH 07/69] Commit local django start scripts back --- .../compose/local/django/start | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 {{cookiecutter.project_slug}}/compose/local/django/start diff --git a/{{cookiecutter.project_slug}}/compose/local/django/start b/{{cookiecutter.project_slug}}/compose/local/django/start new file mode 100644 index 000000000..50227e19e --- /dev/null +++ b/{{cookiecutter.project_slug}}/compose/local/django/start @@ -0,0 +1,10 @@ +#!/bin/sh + +set -o errexit +set -o pipefail +set -o nounset +set -o xtrace + + +python manage.py migrate +python manage.py runserver_plus 0.0.0.0:8000 From 8e429d7e3d5ad785b12f761b27197bd31ef5da27 Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Mon, 21 May 2018 16:20:16 +0300 Subject: [PATCH 08/69] Update PyCharm configs with respect to the latest IDE version --- {{cookiecutter.project_slug}}/.idea/misc.xml | 6 ++++ .../.idea/modules.xml | 8 +++++ .../runConfigurations/Docker__runserver.xml | 33 ------------------- .../merge_production_dotenvs_in_dotenv.xml | 2 +- .../{Docker__migrate.xml => migrate.xml} | 8 ++--- .../.idea/runConfigurations/runserver.xml | 33 +++++++++++++++++++ ..._runserver_plus.xml => runserver_plus.xml} | 8 ++--- ...ocker__tests___all.xml => tests___all.xml} | 6 ++-- ...stUser.xml => tests___class__TestUser.xml} | 6 ++-- ...dels.xml => tests___file__test_models.xml} | 6 ++-- ...e__users.xml => tests___module__users.xml} | 6 ++-- ...sts___specific__test_get_absolute_url.xml} | 6 ++-- {{cookiecutter.project_slug}}/.idea/vcs.xml | 2 +- .../.idea/{{cookiecutter.project_slug}}.iml | 19 +++++++++-- 14 files changed, 88 insertions(+), 61 deletions(-) create mode 100644 {{cookiecutter.project_slug}}/.idea/misc.xml create mode 100644 {{cookiecutter.project_slug}}/.idea/modules.xml delete mode 100644 {{cookiecutter.project_slug}}/.idea/runConfigurations/Docker__runserver.xml rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__migrate.xml => migrate.xml} (80%) create mode 100644 {{cookiecutter.project_slug}}/.idea/runConfigurations/runserver.xml rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__runserver_plus.xml => runserver_plus.xml} (81%) rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__tests___all.xml => tests___all.xml} (83%) rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__tests___class__TestUser.xml => tests___class__TestUser.xml} (83%) rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__tests___file__test_models.xml => tests___file__test_models.xml} (82%) rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__tests___module__users.xml => tests___module__users.xml} (82%) rename {{cookiecutter.project_slug}}/.idea/runConfigurations/{Docker__tests___specific__test_get_absolute_url.xml => tests___specific__test_get_absolute_url.xml} (82%) diff --git a/{{cookiecutter.project_slug}}/.idea/misc.xml b/{{cookiecutter.project_slug}}/.idea/misc.xml new file mode 100644 index 000000000..10af178fd --- /dev/null +++ b/{{cookiecutter.project_slug}}/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/{{cookiecutter.project_slug}}/.idea/modules.xml b/{{cookiecutter.project_slug}}/.idea/modules.xml new file mode 100644 index 000000000..1418fcddf --- /dev/null +++ b/{{cookiecutter.project_slug}}/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/{{cookiecutter.project_slug}}/.idea/runConfigurations/Docker__runserver.xml b/{{cookiecutter.project_slug}}/.idea/runConfigurations/Docker__runserver.xml deleted file mode 100644 index 77b9a5875..000000000 --- a/{{cookiecutter.project_slug}}/.idea/runConfigurations/Docker__runserver.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - diff --git a/{{cookiecutter.project_slug}}/.idea/runConfigurations/merge_production_dotenvs_in_dotenv.xml b/{{cookiecutter.project_slug}}/.idea/runConfigurations/merge_production_dotenvs_in_dotenv.xml index 18f8365aa..cf2c5dd89 100644 --- a/{{cookiecutter.project_slug}}/.idea/runConfigurations/merge_production_dotenvs_in_dotenv.xml +++ b/{{cookiecutter.project_slug}}/.idea/runConfigurations/merge_production_dotenvs_in_dotenv.xml @@ -1,5 +1,6 @@ +