# Full docker-compose: All services + infrastructure # Use this to run the complete platform with all services in Docker services: postgres: image: postgres:16-alpine container_name: goplt-postgres environment: POSTGRES_USER: goplt POSTGRES_PASSWORD: goplt_password POSTGRES_DB: goplt ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U goplt"] interval: 5s timeout: 5s retries: 5 networks: - goplt-network consul: image: consul:1.15.4 container_name: goplt-consul command: consul agent -dev -client=0.0.0.0 ports: - "8500:8500" volumes: - consul_data:/consul/data healthcheck: test: ["CMD-SHELL", "consul members"] interval: 10s timeout: 3s retries: 5 networks: - goplt-network auth-service: build: context: . dockerfile: cmd/auth-service/Dockerfile container_name: goplt-auth-service environment: ENVIRONMENT: production DATABASE_DSN: "postgres://goplt:goplt_password@postgres:5432/goplt?sslmode=disable" REGISTRY_TYPE: consul REGISTRY_CONSUL_ADDRESS: "consul:8500" ports: - "8081:8081" depends_on: postgres: condition: service_healthy consul: condition: service_healthy networks: - goplt-network restart: unless-stopped identity-service: build: context: . dockerfile: cmd/identity-service/Dockerfile container_name: goplt-identity-service environment: ENVIRONMENT: production DATABASE_DSN: "postgres://goplt:goplt_password@postgres:5432/goplt?sslmode=disable" REGISTRY_TYPE: consul REGISTRY_CONSUL_ADDRESS: "consul:8500" ports: - "8082:8082" depends_on: postgres: condition: service_healthy consul: condition: service_healthy networks: - goplt-network restart: unless-stopped authz-service: build: context: . dockerfile: cmd/authz-service/Dockerfile container_name: goplt-authz-service environment: ENVIRONMENT: production DATABASE_DSN: "postgres://goplt:goplt_password@postgres:5432/goplt?sslmode=disable" REGISTRY_TYPE: consul REGISTRY_CONSUL_ADDRESS: "consul:8500" ports: - "8083:8083" depends_on: postgres: condition: service_healthy consul: condition: service_healthy networks: - goplt-network restart: unless-stopped audit-service: build: context: . dockerfile: cmd/audit-service/Dockerfile container_name: goplt-audit-service environment: ENVIRONMENT: production DATABASE_DSN: "postgres://goplt:goplt_password@postgres:5432/goplt?sslmode=disable" REGISTRY_TYPE: consul REGISTRY_CONSUL_ADDRESS: "consul:8500" ports: - "8084:8084" depends_on: postgres: condition: service_healthy consul: condition: service_healthy networks: - goplt-network restart: unless-stopped volumes: postgres_data: driver: local consul_data: driver: local networks: goplt-network: driver: bridge