From 035dc4d7ab7e5d8bce392896473f11056ef51347 Mon Sep 17 00:00:00 2001 From: Shupeyko Nikita Date: Fri, 11 Aug 2017 10:13:30 +0300 Subject: [PATCH] Introduce development-time Celery services (#1257) * Introduce development-time Celery services Closes #1225. * Re-order django and postgres services in production.yml * Switch local service extension tactics * Fix celery services inheriting ports from the django's --- .../compose/django/Dockerfile-dev | 8 +++ .../compose/django/celery/beat/start-dev.sh | 8 +++ .../compose/django/celery/worker/start-dev.sh | 7 +++ {{cookiecutter.project_slug}}/local.yml | 58 +++++++++++++------ {{cookiecutter.project_slug}}/production.yml | 14 ++--- 5 files changed, 70 insertions(+), 25 deletions(-) create mode 100644 {{cookiecutter.project_slug}}/compose/django/celery/beat/start-dev.sh create mode 100644 {{cookiecutter.project_slug}}/compose/django/celery/worker/start-dev.sh diff --git a/{{cookiecutter.project_slug}}/compose/django/Dockerfile-dev b/{{cookiecutter.project_slug}}/compose/django/Dockerfile-dev index 673a0640..d2c56532 100644 --- a/{{cookiecutter.project_slug}}/compose/django/Dockerfile-dev +++ b/{{cookiecutter.project_slug}}/compose/django/Dockerfile-dev @@ -13,6 +13,14 @@ COPY ./compose/django/start-dev.sh /start-dev.sh RUN sed -i 's/\r//' /start-dev.sh RUN chmod +x /start-dev.sh +COPY ./compose/django/celery/worker/start-dev.sh /start-celeryworker-dev.sh +RUN sed -i 's/\r//' /start-celeryworker-dev.sh +RUN chmod +x /start-celeryworker-dev.sh + +COPY ./compose/django/celery/beat/start-dev.sh /start-celerybeat-dev.sh +RUN sed -i 's/\r//' /start-celerybeat-dev.sh +RUN chmod +x /start-celerybeat-dev.sh + WORKDIR /app ENTRYPOINT ["/entrypoint.sh"] diff --git a/{{cookiecutter.project_slug}}/compose/django/celery/beat/start-dev.sh b/{{cookiecutter.project_slug}}/compose/django/celery/beat/start-dev.sh new file mode 100644 index 00000000..987d7259 --- /dev/null +++ b/{{cookiecutter.project_slug}}/compose/django/celery/beat/start-dev.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -o errexit +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/django/celery/worker/start-dev.sh b/{{cookiecutter.project_slug}}/compose/django/celery/worker/start-dev.sh new file mode 100644 index 00000000..594065e6 --- /dev/null +++ b/{{cookiecutter.project_slug}}/compose/django/celery/worker/start-dev.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -o errexit +set -o nounset +set -o xtrace + +celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO diff --git a/{{cookiecutter.project_slug}}/local.yml b/{{cookiecutter.project_slug}}/local.yml index dbd321c8..94562b9c 100644 --- a/{{cookiecutter.project_slug}}/local.yml +++ b/{{cookiecutter.project_slug}}/local.yml @@ -5,6 +5,22 @@ volumes: postgres_backup_dev: {} services: + django: &django + build: + context: . + dockerfile: ./compose/django/Dockerfile-dev + depends_on: + - postgres{% if cookiecutter.use_mailhog == 'y' %} + - mailhog{% endif %} + volumes: + - .:/app + environment: + - POSTGRES_USER={{cookiecutter.project_slug}} + - USE_DOCKER=yes + ports: + - "8000:8000" + command: /start-dev.sh + postgres: build: ./compose/postgres volumes: @@ -12,23 +28,6 @@ services: - postgres_backup_dev:/backups environment: - POSTGRES_USER={{cookiecutter.project_slug}} - - django: - build: - context: . - dockerfile: ./compose/django/Dockerfile-dev - command: /start-dev.sh - depends_on: - - postgres{% if cookiecutter.use_mailhog == 'y' %} - - mailhog{% endif %} - environment: - - POSTGRES_USER={{cookiecutter.project_slug}} - - USE_DOCKER=yes - volumes: - - .:/app - ports: - - "8000:8000" - {% if cookiecutter.use_pycharm == 'y' %} pycharm: build: @@ -41,10 +40,33 @@ services: volumes: - .:/app {% endif %} - {% if cookiecutter.use_mailhog == 'y' %} mailhog: image: mailhog/mailhog:v1.0.0 ports: - "8025:8025" {% endif %} +{% if cookiecutter.use_celery == 'y' %} + redis: + image: redis:3.0 + + celeryworker: + # https://github.com/docker/compose/issues/3220 + <<: *django + depends_on: + - redis + - postgres{% if cookiecutter.use_mailhog == 'y' %} + - mailhog{% endif %} + ports: [] + command: /start-celeryworker-dev.sh + + celerybeat: + # https://github.com/docker/compose/issues/3220 + <<: *django + depends_on: + - redis + - postgres{% if cookiecutter.use_mailhog == 'y' %} + - mailhog{% endif %} + ports: [] + command: /start-celerybeat-dev.sh +{% endif %} diff --git a/{{cookiecutter.project_slug}}/production.yml b/{{cookiecutter.project_slug}}/production.yml index af54b444..00df90d5 100644 --- a/{{cookiecutter.project_slug}}/production.yml +++ b/{{cookiecutter.project_slug}}/production.yml @@ -5,13 +5,6 @@ volumes: postgres_backup: {} services: - postgres: - build: ./compose/postgres - volumes: - - postgres_data:/var/lib/postgresql/data - - postgres_backup:/backups - env_file: .env - django: build: context: . @@ -22,6 +15,13 @@ services: command: /gunicorn.sh env_file: .env + postgres: + build: ./compose/postgres + volumes: + - postgres_data:/var/lib/postgresql/data + - postgres_backup:/backups + env_file: .env + nginx: build: ./compose/nginx depends_on: