version: '3.8'

x-env_file_personifi: &env
  - .env

name: siren
services:
  service:
    image: siren-service:${SIREN_VERSION:-latest}
    container_name: siren-service
    build:
      context: .
      dockerfile: ./Dockerfile
      args:
        - VERSION=${SIREN_VERSION:-latest}
    env_file: *env
    environment:
      DATABASE_HOST: db
      DATABASE_PORT: 5432
      REDIS_HOST: redis
      REDIS_PORT: 6379
      MINIO_HOST: minio
      MINIO_PORT: 9000
      SERVICE_HOST: service
      SERVICE_PORT: 5000
      DATA_DIR_PATH: /data
    volumes:
      - ${DATA_DIR_PATH}:/data
    ports:
      - ${SERVICE_PORT:-5000}:5000
    depends_on:
      - db
    networks:
      - frontend
      - backend
    restart: unless-stopped
  db:
    image: postgres:latest
    container_name: siren-db
    env_file: *env
    environment:
      POSTGRES_USER: ${DATABASE_USER}
      POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
      POSTGRES_DB: ${DATABASE_NAME}
    volumes:
      - db:/var/lib/postgresql/data
      - db_logs:/var/log
    ports:
      - ${DATABASE_PORT:-5432}:5432
    networks:
      - backend
    restart: unless-stopped
  redis:
    image: redis:latest
    container_name: siren-redis
    ports:
      - ${REDIS_PORT:-6379}:6379
    networks:
      - backend
    restart: unless-stopped
  minio:
    image: minio/minio
    container_name: siren-minio
    environment:
      MINIO_ROOT_USER: ${MINIO_ROOT_USER}
      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
    volumes:
      - minio:/data
    ports:
      - ${MINIO_PORT:-9000}:9000
      - ${MINIO_PORT_INTERNAL:-9001}:9001
    networks:
      - backend
    command: server --console-address ":9001" /data
    restart: unless-stopped

volumes:
  db:
  db_logs:
  minio:

networks:
  frontend:
  backend:
