services: mongodb: image: mongo:8.0 restart: unless-stopped ports: - "127.0.0.1:27017:27017" healthcheck: test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"] interval: 5s timeout: 5s retries: 10 start_period: 10s volumes: - knownpath-mongodb-data:/data/db valkey: image: valkey/valkey:9.1.1-alpine restart: unless-stopped command: - valkey-server - --appendonly - "yes" - --save - "60" - "1" - --maxmemory-policy - noeviction ports: - "127.0.0.1:6379:6379" healthcheck: test: ["CMD", "valkey-cli", "ping"] interval: 5s timeout: 3s retries: 20 start_period: 5s volumes: - knownpath-valkey-data:/data api: profiles: [platform] build: context: . target: api image: knownpath-api:local restart: unless-stopped env_file: .env environment: API_HOST: 0.0.0.0 MONGODB_URI: ${COMPOSE_MONGODB_URI:-mongodb://mongodb:27017} PORT: "3001" QUEUE_REDIS_URL: ${COMPOSE_QUEUE_REDIS_URL:-redis://valkey:6379} ports: - "127.0.0.1:3001:3001" depends_on: mongodb: condition: service_healthy valkey: condition: service_healthy worker: profiles: [platform] build: context: . target: worker image: knownpath-worker:local restart: unless-stopped env_file: .env environment: MONGODB_URI: ${COMPOSE_MONGODB_URI:-mongodb://mongodb:27017} QUEUE_REDIS_URL: ${COMPOSE_QUEUE_REDIS_URL:-redis://valkey:6379} depends_on: mongodb: condition: service_healthy valkey: condition: service_healthy web: profiles: [platform] build: context: . target: web image: knownpath-web:local restart: unless-stopped environment: KNOWNPATH_API_URL: http://api:3001 PORT: "3000" ports: - "127.0.0.1:3000:3000" depends_on: api: condition: service_healthy volumes: knownpath-mongodb-data: knownpath-valkey-data: