volumes: {{ cookiecutter.project_slug }}_local_postgres_data: {} {{ cookiecutter.project_slug }}_local_postgres_data_backups: {} {% if cookiecutter.use_celery == 'y' %}{{ cookiecutter.project_slug }}_local_redis_data: {}{% endif %} services: django:{% if cookiecutter.use_celery == 'y' %} &django{% endif %} build: context: . dockerfile: ./compose/local/django/Dockerfile image: {{ cookiecutter.project_slug }}_local_django container_name: {{ cookiecutter.project_slug }}_local_django depends_on: - postgres {%- if cookiecutter.use_celery == 'y' %} - redis {%- endif %} {%- if cookiecutter.use_mailpit == 'y' %} - mailpit {%- endif %} develop: # Create a `watch` configuration to update the appl # https://docs.docker.com/compose/file-watch/#compose-watch-versus-bind-mounts watch: # Sync the working directory with the `/app` directory in the container - action: sync path: . target: /app # Exclude the project virtual environment — it could be for a # different platform in the container ignore: - .venv/ # Rebuild the image on changes to the `pyproject.toml` - action: rebuild path: ./pyproject.toml env_file: - ./.envs/.local/.django - ./.envs/.local/.postgres ports: - '8000:8000' command: /start postgres: build: context: . dockerfile: ./compose/production/postgres/Dockerfile image: {{ cookiecutter.project_slug }}_production_postgres container_name: {{ cookiecutter.project_slug }}_local_postgres volumes: - {{ cookiecutter.project_slug }}_local_postgres_data:/var/lib/postgresql/data - {{ cookiecutter.project_slug }}_local_postgres_data_backups:/backups env_file: - ./.envs/.local/.postgres {%- if cookiecutter.use_mailpit == 'y' %} mailpit: image: docker.io/axllent/mailpit:latest container_name: {{ cookiecutter.project_slug }}_local_mailpit ports: - "8025:8025" {%- endif %} {%- if cookiecutter.use_celery == 'y' %} redis: image: docker.io/redis:6 container_name: {{ cookiecutter.project_slug }}_local_redis {% if cookiecutter.use_celery == 'y' %} volumes: - {{ cookiecutter.project_slug }}_local_redis_data:/data {% endif %} celeryworker: <<: *django image: {{ cookiecutter.project_slug }}_local_celeryworker container_name: {{ cookiecutter.project_slug }}_local_celeryworker depends_on: - redis - postgres {%- if cookiecutter.use_mailpit == 'y' %} - mailpit {%- endif %} ports: [] command: /start-celeryworker celerybeat: <<: *django image: {{ cookiecutter.project_slug }}_local_celerybeat container_name: {{ cookiecutter.project_slug }}_local_celerybeat depends_on: - redis - postgres {%- if cookiecutter.use_mailpit == 'y' %} - mailpit {%- endif %} ports: [] command: /start-celerybeat flower: <<: *django image: {{ cookiecutter.project_slug }}_local_flower container_name: {{ cookiecutter.project_slug }}_local_flower ports: - '5555:5555' command: /start-flower {%- endif %} {%- if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] %} node: build: context: . dockerfile: ./compose/local/node/Dockerfile image: {{ cookiecutter.project_slug }}_local_node container_name: {{ cookiecutter.project_slug }}_local_node depends_on: - django volumes: - .:/app:z # http://jdlm.info/articles/2016/03/06/lessons-building-node-app-docker.html - /app/node_modules command: npm run dev ports: - '3000:3000' {%- if cookiecutter.frontend_pipeline == 'Gulp' %} # Expose browsersync UI: https://www.browsersync.io/docs/options/#option-ui - '3001:3001' {%- endif %} {%- endif %}