version: '3'
services:
  sentry:
    image: 'sentry:latest'
    command: start
    networks:
      - sentry
      - traefik-public
    depends_on:
      - redis
      - postgres
    volumes:
      - sentry:/var/lib/sentry/files
    environment:
      - SENTRY_SECRET_KEY=secret
      - SENTRY_POSTGRES_HOST=postgres
      - SENTRY_POSTGRES_PORT=5432
      - SENTRY_DB_NAME=sentry
      - SENTRY_DB_USER=sentry
      - SENTRY_REDIS_HOST=redis
      - SENTRY_REDIS_PORT=6379
      - SENTRY_DB_PASSWORD=sentry-db-pass
      - SENTRY_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
      - SENTRY_EMAIL_HOST=smtp.com
      - SENTRY_EMAIL_PASSWORD=smtp-pass
      - SENTRY_EMAIL_USER=smtp-user
      - SENTRY_EMAIL_PORT=587
      - SENTRY_EMAIL_USE_TLS=True
      - SENTRY_ADMIN_EMAIL=admin@email.com
      - SENTRY_SERVER_EMAIL=sentry@email.com
      - SENTRY_URL_PREFIX=https://sentry.mine.com/
      - SENTRY_ADMIN_USERNAME=admin
      - SENTRY_ADMIN_PASSWORD=password

    deploy:
      labels:
        - "traefik.enable=true"
        - "traefik.http.services.sentry.loadbalancer.server.port=9000"
        - "traefik.http.routers.sentry.rule=Host(`sentry.mine.com`)"
        - "traefik.http.routers.sentry.entrypoints=websecure"
        - "traefik.http.routers.sentry.tls.certresolver=letsencryptresolver"
        - "traefik.docker.network=traefik-public"

  sentry-cron:
    image: 'sentry:latest'
    depends_on:
      - postgres
      - redis
    command: "sentry run cron"
    volumes:
      - sentry:/var/lib/sentry/files
    networks:
      - sentry
    environment:
      - SENTRY_SECRET_KEY=secret
      - SENTRY_POSTGRES_HOST=postgres
      - SENTRY_POSTGRES_PORT=5432
      - SENTRY_DB_NAME=sentry
      - SENTRY_DB_USER=sentry
      - SENTRY_REDIS_HOST=redis
      - SENTRY_REDIS_PORT=6379
      - SENTRY_DB_PASSWORD=sentry-db-pass
      - SENTRY_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
      - SENTRY_EMAIL_HOST=smtp.com
      - SENTRY_EMAIL_PASSWORD=smtp-pass
      - SENTRY_EMAIL_USER=user
      - SENTRY_EMAIL_PORT=587
      - SENTRY_EMAIL_USE_TLS=True
      - SENTRY_ADMIN_EMAIL=admin@email.com
      - SENTRY_SERVER_EMAIL=sentry@email.com
      - SENTRY_URL_PREFIX=https://sentry.mine.com/
      - SENTRY_ADMIN_USERNAME=admin
      - SENTRY_ADMIN_PASSWORD=password

  sentry-worker:
    image: 'sentry:latest'
    depends_on:
      - sentry-base
      - postgres
      - redis
    command: "sentry run worker"
    volumes:
      - sentry:/var/lib/sentry/files
    networks:
      - sentry
    environment:
      - SENTRY_SECRET_KEY=secret
      - SENTRY_POSTGRES_HOST=postgres
      - SENTRY_POSTGRES_PORT=5432
      - SENTRY_DB_NAME=sentry
      - SENTRY_DB_USER=sentry
      - SENTRY_REDIS_HOST=redis
      - SENTRY_REDIS_PORT=6379
      - SENTRY_DB_PASSWORD=sentry-db-pass
      - SENTRY_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
      - SENTRY_EMAIL_HOST=smtp.com
      - SENTRY_EMAIL_PASSWORD=email-pass
      - SENTRY_EMAIL_USER=user
      - SENTRY_EMAIL_PORT=587
      - SENTRY_EMAIL_USE_TLS=True
      - SENTRY_ADMIN_EMAIL=admin@email.com
      - SENTRY_SERVER_EMAIL=sentry@email.com
      - SENTRY_URL_PREFIX=https://sentry.mine.com/
      - SENTRY_ADMIN_USERNAME=admin
      - SENTRY_ADMIN_PASSWORD=password


  redis:
    image: 'redis:latest'
    networks:
      - sentry

  postgres:
    image: 'postgres:latest'
    networks:
      - sentry
    environment:
      POSTGRES_USER: sentry
      POSTGRES_PASSWORD: neMNpdezoj
      POSTGRES_DB: sentry
    volumes:
      - postgres:/var/lib/postgresql/data

volumes:
  postgres:
  sentry:

networks:
  traefik-public:
    external: true
  sentry: