version: "3.8"
volumes:
db_volume: {}
services:
django: &django
container_name: django
image: ghcr.io/napse-invest/napse-developer-toolkit/napse_dtk_prod_django:v1.4.30
environment:
- AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- AWS_S3_BUCKET_URI=${CRANE_IT_S3_BUCKET_URI}/litestream
- AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- DJANGO_SECRET_KEY=$DJANGO_SECRET_KEY
- NAPSE_API_DOMAIN=$CRANE_IT_EB_DOMAIN
volumes:
- db_volume:/app/db
command: "/start"
env_file:
- ./.envs/.django
- ./.envs/.litestream
expose:
- "8000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.django.rule=Host(`$CRANE_IT_EB_DOMAIN`)"
- "traefik.http.routers.django.entrypoints=websecure"
- "traefik.http.routers.django.tls.certresolver=myresolver"
- "traefik.http.services.django.loadbalancer.server.port=8000"
ports: []
redis: &redis
container_name: redis
image: redis:6
ports: []
celeryworker: &celeryworker
<<: *django
container_name: celeryworker
restart: on-failure
depends_on:
- django
- redis
command: "/start-celeryworker"
labels:
- "traefik.enable=false"
ports: []
celerybeat: &celerybeat
<<: *django
container_name: celerybeat
restart: on-failure
depends_on:
- django
- redis
command: "/start-celerybeat"
labels:
- "traefik.enable=false"
ports: []
traefik:
image: "traefik:v2.9.5"
container_name: traefik
command:
- "--log.level=INFO"
- "--api.insecure=false"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.httpchallenge=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.myresolver.acme.email=craneit.contact@gmail.com"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"