services: kong: container_name: api-gateway # image: kong:3.4 build: context: ./gateway environment: KONG_PLUGINS: bundled,oidc KONG_DATABASE: "off" KONG_DECLARATIVE_CONFIG: /etc/kong/kong.yml KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_ADMIN_LISTEN: 0.0.0.0:8001 KONG_NGINX_HTTP_CLIENT_HEADER_BUFFER_SIZE: "16k" KONG_NGINX_HTTP_LARGE_CLIENT_HEADER_BUFFERS: "8 32k" volumes: - ./gateway/kong.yml:/etc/kong/kong.yml ports: - "8000:8000" - "8443:8443" - "8001:8001" - "8444:8444" networks: - kong-network healthcheck: test: ["CMD", "kong", "health"] interval: 10s timeout: 10s retries: 3 deploy: resources: limits: memory: 512M product: container_name: product-service build: context: ./services/product ports: - "3001:3000" environment: - NODE_ENV=production - PORT=3000 - SERVICE_ID=product-service - MONGO_URI=mongodb://host.docker.internal:27017/product networks: - kong-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 depends_on: - kong deploy: resources: limits: memory: 256M order: container_name: order-service build: context: ./services/order ports: - "3002:3000" environment: - NODE_ENV=production - PORT=3000 - SERVICE_ID=order-service - MONGO_URI=mongodb://host.docker.internal:27017/order networks: - kong-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 depends_on: - kong deploy: resources: limits: memory: 256M keycloak: image: quay.io/keycloak/keycloak:22.0 container_name: keycloak environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin KC_DB: postgres KC_DB_URL: jdbc:postgresql://keycloak-db:5432/keycloak KC_DB_USERNAME: keycloak KC_DB_PASSWORD: keycloak command: start-dev ports: - "8080:8080" depends_on: - keycloak-db networks: - kong-network keycloak-db: image: postgres:15 container_name: keycloak-db environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak POSTGRES_PASSWORD: keycloak volumes: - keycloak-data:/var/lib/postgresql/data networks: - kong-network networks: kong-network: driver: bridge volumes: keycloak-data: driver: local