version: '2' volumes: postgres_data: {} postgres_backup: {} services: postgres: build: ./compose/postgres volumes: - postgres_data:/var/lib/postgresql/data - postgres_backup:/backups env_file: .env django: build: context: . dockerfile: ./compose/django/Dockerfile user: django depends_on: - postgres - redis command: /gunicorn.sh env_file: .env nginx: build: ./compose/nginx depends_on: - django {% if cookiecutter.use_lets_encrypt == 'y' %} - certbot {% endif %} ports: - "0.0.0.0:80:80" {% if cookiecutter.use_lets_encrypt == 'y' %} environment: - MY_DOMAIN_NAME={{ cookiecutter.domain_name }} ports: - "0.0.0.0:80:80" - "0.0.0.0:443:443" volumes: - /etc/letsencrypt:/etc/letsencrypt - /var/lib/letsencrypt:/var/lib/letsencrypt certbot: image: quay.io/letsencrypt/letsencrypt command: bash -c "sleep 6 && certbot certonly -n --standalone -d {{ cookiecutter.domain_name }} --text --agree-tos --email {{ cookiecutter.email }} --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --verbose --keep-until-expiring --standalone-supported-challenges http-01" entrypoint: "" volumes: - /etc/letsencrypt:/etc/letsencrypt - /var/lib/letsencrypt:/var/lib/letsencrypt ports: - "80" - "443" environment: - TERM=xterm {% endif %} redis: image: redis:latest {% if cookiecutter.use_celery == 'y' %} celeryworker: build: context: . dockerfile: ./compose/django/Dockerfile user: django env_file: .env depends_on: - postgres - redis command: celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO celerybeat: build: context: . dockerfile: ./compose/django/Dockerfile user: django env_file: .env depends_on: - postgres - redis command: celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO {% endif %}