volumes: postgres_data: minio_data: services: minio: image: coollabsio/minio:latest restart: always ports: - '9000:9000' - '9001:9001' # for minio console volumes: - minio_data:/data - ./init-minio.sh:/init-minio.sh entrypoint: '/init-minio.sh' environment: - MINIO_ROOT_USER=${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} - MINIO_DEFAULT_BUCKETS=${MINIO_DEFAULT_BUCKETS} - MINIO_BROWSER=${MINIO_BROWSER:-off} - MINIO_EXPIRATION_DAYS=${MINIO_EXPIRATION_DAYS:-1} db-dev: image: pgvector/pgvector:pg18 restart: always environment: POSTGRES_PASSWORD: password ports: - '5432:5432' volumes: - postgres_data:/var/lib/postgresql ssh-server: image: linuxserver/openssh-server:latest restart: always depends_on: - db-dev environment: - PUID=1000 - PGID=1000 - TZ=UTC - PUBLIC_KEY=${DEV_SSH_PUBLIC_KEY:-} - USER_NAME=sshuser - SUDO_ACCESS=true - PASSWORD_ACCESS=false - LOG_STDOUT=true ports: - '2222:2222' volumes: - ./dev-configs/sshd_config:/config/sshd/sshd_config headless-browser: build: dockerfile: Dockerfile.headless-browser restart: always environment: # browserless v2 default session budget is 30s — too short for # dev-Vite page loads and the app capture ready-wait (60s). - TIMEOUT=180000 ports: - '3001:3000' prometheus: image: prom/prometheus:latest restart: always ports: - '9091:9090' volumes: - ./dev-configs/prometheus.dev.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' mailpit: image: axllent/mailpit:latest restart: unless-stopped ports: - '8025:8025' - '1025:1025' environment: MP_MAX_MESSAGES: 5000 MP_SMTP_AUTH_ACCEPT_ANY: 1 MP_SMTP_AUTH_ALLOW_INSECURE: 1 nats: image: nats:2.11-alpine command: ['-js'] ports: - '4222:4222' - '8222:8222'