version: "3"

# optional ports are specified throughout for more advanced use cases.

services:
  minio-service:
    container_name: budi-minio-dev
    restart: on-failure
    image: minio/minio
    volumes:
      - minio_data:/data
    ports:
      - "${MINIO_PORT}:9000"
      - "9001:9001"
    environment:
      MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
      MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
    command: server /data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  proxy-service:
    container_name: budi-nginx-dev
    restart: on-failure
    image: budibase/proxy:latest
    volumes:
      - ./nginx.dev.conf:/etc/nginx/templates/nginx.conf.template
      - ./proxy/error.html:/usr/share/nginx/html/error.html
    ports:
      - "${MAIN_PORT}:10000"
    depends_on:
      - minio-service
      - couchdb-service
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      - PROXY_ADDRESS=host.docker.internal

  couchdb-service:
    container_name: budi-couchdb3-dev
    restart: on-failure
    image: budibase/couchdb:v3.3.3-sqs-v2.1.1
    environment:
      - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD}
      - COUCHDB_USER=${COUCH_DB_USER}
    ports:
      - "${COUCH_DB_PORT}:5984"
      - "${COUCH_DB_SQS_PORT}:4984"
    volumes:
      - couchdb_data:/data

  redis-service:
    container_name: budi-redis-dev
    restart: on-failure
    image: redis
    command: redis-server --requirepass ${REDIS_PASSWORD}
    ports:
      - "${REDIS_PORT}:6379"
    volumes:
      - redis_data:/data

volumes:
  couchdb_data:
    driver: local
  minio_data:
    driver: local
  redis_data:
    driver: local