version: "3.4"

services:
  app:
    env_file:
      - .env
    build:
      context: .
      dockerfile: ./Dockerfile
      target: deploy
    ports:
      - "8000:8000"
    volumes:
      - .:/core-images
      - /Users/artem/.aws:/.aws
    environment:
      AWS_CONFIG_FILE: /.aws/config
      AWS_SHARED_CREDENTIALS_FILE: /.aws/credentials
    depends_on:
      - redis
      - db
      - s3storage

  app_https:
    build:
      context: .
      dockerfile: ./Dockerfile
      target: deploy
    env_file:
      - .env
    volumes:
      - .:/core-images
    ports:
      - "443:8000"
    depends_on:
      - redis
      - db
      - s3storage
    command: "gunicorn core_images.wsgi:application -c /etc/gunicorn/gunicorn_config.py --reload --certfile=local.atlas.stream.pem --keyfile=local.atlas.stream-key.pem"

  celery:
    env_file:
      - .env
    build:
      context: .
      dockerfile: ./Dockerfile
      target: deploy
    volumes:
      - .:/core-images
    depends_on:
      - redis
      - db
      - s3storage
    command: "celery -A core_images worker -l INFO"

  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: bad_db_passwd
      POSTGRES_USER: core_images
      POSTGRES_DB: core_images
    ports:
      - "5432:5432"
    command: ["postgres", "-c", "log_statement=all", "-c", "fsync=off", "-c", "full_page_writes=off"]

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

  s3storage:
    image: minio/minio
    environment:
      MINIO_ROOT_USER: root
      MINIO_ROOT_PASSWORD: bad_root_passwd
      MINIO_ACCESS_KEY: root
      MINIO_SECRET_KEY: bad_root_passwd
    ports:
      - "9000:9000"
      - "9090:9090"
    entrypoint: sh
    command: "-c 'mkdir -p /data/media && minio server /data --console-address 0.0.0.0:9090'"
