services: postgres: image: postgis/postgis:16-3.4 container_name: goodgo-postgres restart: unless-stopped ports: - '${DB_PORT:-5432}:5432' environment: POSTGRES_DB: ${DB_NAME:-goodgo} POSTGRES_USER: ${DB_USER:-goodgo} POSTGRES_PASSWORD: ${DB_PASSWORD:-goodgo_secret} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U ${DB_USER:-goodgo} -d ${DB_NAME:-goodgo}'] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: - goodgo-net redis: image: redis:7-alpine container_name: goodgo-redis restart: unless-stopped ports: - '${REDIS_PORT:-6379}:6379' command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redis_data:/data healthcheck: test: ['CMD', 'redis-cli', 'ping'] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - goodgo-net typesense: image: typesense/typesense:27.1 container_name: goodgo-typesense restart: unless-stopped ports: - '${TYPESENSE_PORT:-8108}:8108' environment: TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-ts_dev_key_change_me} TYPESENSE_DATA_DIR: /data TYPESENSE_ENABLE_CORS: 'true' volumes: - typesense_data:/data healthcheck: test: ['CMD', 'curl', '-sf', 'http://localhost:8108/health'] interval: 10s timeout: 5s retries: 5 start_period: 15s networks: - goodgo-net minio: image: minio/minio:latest container_name: goodgo-minio restart: unless-stopped ports: - '${MINIO_API_PORT:-9000}:9000' - '${MINIO_CONSOLE_PORT:-9001}:9001' command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD:-minioadmin_secret} volumes: - minio_data:/data healthcheck: test: ['CMD', 'mc', 'ready', 'local'] interval: 10s timeout: 5s retries: 5 start_period: 15s networks: - goodgo-net volumes: pgdata: driver: local redis_data: driver: local typesense_data: driver: local minio_data: driver: local networks: goodgo-net: driver: bridge name: goodgo-net