version: "3.8"

x-testing-host: &testing-host-base
  build:
    dockerfile: Dockerfile
    context: ./docker/testing-host
  networks:
    - coolify
  init: true

services:
  coolify:
    build:
      context: .
      dockerfile: ./docker/dev-ssu/Dockerfile
    ports:
      - "${APP_PORT:-8000}:80"
    environment:
      PUID: "${USERID:-1000}"
      PGID: "${GROUPID:-1000}"
      SSL_MODE: "off"
      AUTORUN_LARAVEL_STORAGE_LINK: "false"
      AUTORUN_LARAVEL_MIGRATION: "false"
      PUSHER_HOST: "${PUSHER_HOST}"
      PUSHER_PORT: "${PUSHER_PORT}"
      PUSHER_SCHEME: "${PUSHER_SCHEME:-http}"
      PUSHER_APP_ID: "${PUSHER_APP_ID:-coolify}"
      PUSHER_APP_KEY: "${PUSHER_APP_KEY:-coolify}"
      PUSHER_APP_SECRET: "${PUSHER_APP_SECRET:-coolify}"
    volumes:
      - .:/var/www/html/:cached
  postgres:
    ports:
      - "${FORWARD_DB_PORT:-5432}:5432"
    env_file:
      - .env
    environment:
      POSTGRES_USER: "${DB_USERNAME:-coolify}"
      POSTGRES_PASSWORD: "${DB_PASSWORD:-password}"
      POSTGRES_DB: "${DB_DATABASE:-coolify}"
      POSTGRES_HOST_AUTH_METHOD: "trust"
    volumes:
      - /data/coolify/_volumes/database/:/var/lib/postgresql/data
      # - coolify-pg-data-dev:/var/lib/postgresql/data
  redis:
    ports:
      - "${FORWARD_REDIS_PORT:-6379}:6379"
    env_file:
      - .env
    volumes:
      - /data/coolify/_volumes/redis/:/data
      # - coolify-redis-data-dev:/data
  soketi:
    env_file:
      - .env
    ports:
      - "${FORWARD_SOKETI_PORT:-6001}:6001"
    environment:
      SOKETI_DEBUG: "false"
      SOKETI_DEFAULT_APP_ID: "${PUSHER_APP_ID:-coolify}"
      SOKETI_DEFAULT_APP_KEY: "${PUSHER_APP_KEY:-coolify}"
      SOKETI_DEFAULT_APP_SECRET: "${PUSHER_APP_SECRET:-coolify}"
  vite:
    image: node:20
    working_dir: /var/www/html
    # environment:
    # VITE_PUSHER_APP_KEY: "${PUSHER_APP_KEY:-coolify}"
    ports:
      - "${VITE_PORT:-5173}:${VITE_PORT:-5173}"
    volumes:
      - .:/var/www/html:cached
    command: sh -c "npm install && npm run dev"
    networks:
      - coolify
  testing-host:
    <<: *testing-host-base
    container_name: coolify-testing-host
    volumes:
      - /:/host
      - /var/run/docker.sock:/var/run/docker.sock
      - /data/coolify/:/data/coolify
    networks:
      - coolify
  mailpit:
    image: "axllent/mailpit:latest"
    container_name: coolify-mail
    ports:
      - "${FORWARD_MAILPIT_PORT:-1025}:1025"
      - "${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025"
    networks:
      - coolify
  minio:
    image: minio/minio:latest
    container_name: coolify-minio
    command: server /data --console-address ":9001"
    ports:
      - "${FORWARD_MINIO_PORT:-9000}:9000"
      - "${FORWARD_MINIO_PORT_CONSOLE:-9001}:9001"
    environment:
      MINIO_ACCESS_KEY: "${MINIO_ACCESS_KEY:-minioadmin}"
      MINIO_SECRET_KEY: "${MINIO_SECRET_KEY:-minioadmin}"
    volumes:
      - /data/coolify/_volumes/minio/:/data
      # - coolify-minio-data-dev:/data
    networks:
      - coolify

volumes:
  coolify-data-dev:
  coolify-pg-data-dev:
  coolify-redis-data-dev:
  coolify-minio-data-dev:


networks:
  coolify:
    name: coolify
    external: false