services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: coplace ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 10 dragonfly: image: docker.dragonflydb.io/dragonflydb/dragonfly:latest restart: unless-stopped ulimits: memlock: -1 ports: - "6379:6379" volumes: - dragonfly_data:/data soketi: image: quay.io/soketi/soketi:latest-16-alpine restart: unless-stopped environment: SOKETI_DEBUG: "1" SOKETI_DEFAULT_APP_ID: app-id SOKETI_DEFAULT_APP_KEY: app-key SOKETI_DEFAULT_APP_SECRET: app-secret ports: - "6001:6001" app: build: . restart: unless-stopped depends_on: postgres: condition: service_healthy dragonfly: condition: service_started soketi: condition: service_started environment: DATABASE_URL: postgresql://postgres:postgres@postgres:5432/coplace?schema=public DRAGONFLY_URL: redis://dragonfly:6379 SOKETI_HOST: soketi SOKETI_PORT: "6001" ports: - "3000:3000" volumes: postgres_data: dragonfly_data: