name: is-coursework services: frontend: build: context: ./domains-frontend dockerfile: Dockerfile container_name: frontend ports: - "3000:3000" depends_on: - api-gateway - exdns networks: - domain-registrar-network api-gateway: build: context: . dockerfile: api-gateway/Dockerfile container_name: api-gateway ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker - API_GATEWAY_STRIP_PREFIX=${API_GATEWAY_STRIP_PREFIX:-1} depends_on: - redis networks: - domain-registrar-network redis: image: redis:7-alpine container_name: redis ports: - "6379:6379" volumes: - redis-data:/data networks: - domain-registrar-network command: redis-server --appendonly yes domain-service: build: context: . dockerfile: domain-service/Dockerfile container_name: domain-service ports: - "8082:8082" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker - EXDNS_API_TOKEN=${EXDNS_API_TOKEN:-changeme} depends_on: - postgres-domain networks: - domain-registrar-network postgres-domain: image: postgres:15-alpine container_name: postgres-domain environment: POSTGRES_DB: domain_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5432:5432" volumes: - postgres-domain-data:/var/lib/postgresql/data networks: - domain-registrar-network auth-service: build: context: . dockerfile: auth-service/Dockerfile container_name: auth-service ports: - "8081:8081" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker depends_on: - postgres-auth networks: - domain-registrar-network postgres-auth: image: postgres:15-alpine container_name: postgres-auth environment: POSTGRES_DB: auth_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5434:5432" volumes: - postgres-auth-data:/var/lib/postgresql/data networks: - domain-registrar-network notification-service: build: context: . dockerfile: notification-service/Dockerfile container_name: notification-service ports: - "8085:8085" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker - MAIL_HOST=${MAIL_HOST:-smtp.yandex.ru} - MAIL_PORT=${MAIL_PORT:-587} - MAIL_USERNAME=${MAIL_USERNAME:-} - MAIL_PASSWORD=${MAIL_PASSWORD:-} depends_on: - postgres-notification networks: - domain-registrar-network postgres-notification: image: postgres:15-alpine container_name: postgres-notification environment: POSTGRES_DB: notification_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5433:5432" volumes: - postgres-notification-data:/var/lib/postgresql/data networks: - domain-registrar-network order-service: build: context: . dockerfile: order-service/Dockerfile container_name: order-service ports: - "8084:8084" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker depends_on: - postgres-order - domain-service networks: - domain-registrar-network payment-service: build: context: . dockerfile: payment-service/Dockerfile container_name: payment-service ports: - "8083:8083" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker depends_on: - postgres-payment - domain-service networks: - domain-registrar-network postgres-order: image: postgres:15-alpine container_name: postgres-order environment: POSTGRES_DB: order_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5435:5432" volumes: - postgres-order-data:/var/lib/postgresql/data networks: - domain-registrar-network postgres-payment: image: postgres:15-alpine container_name: postgres-payment environment: POSTGRES_DB: payment_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5436:5432" volumes: - postgres-payment-data:/var/lib/postgresql/data networks: - domain-registrar-network admin-service: build: context: . dockerfile: admin-service/Dockerfile container_name: admin-service ports: - "8086:8086" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker networks: - domain-registrar-network scheduler-service: build: context: . dockerfile: scheduler-service/Dockerfile container_name: scheduler-service ports: - "8088:8088" env_file: - .env environment: - SPRING_PROFILES_ACTIVE=docker depends_on: - domain-service - auth-service - notification-service networks: - domain-registrar-network audit-service: build: context: . dockerfile: audit-service/Dockerfile container_name: audit-service ports: - "8087:8087" environment: - SPRING_PROFILES_ACTIVE=docker env_file: .env depends_on: - postgres-audit networks: - domain-registrar-network postgres-audit: image: postgres:15-alpine container_name: postgres-audit environment: POSTGRES_DB: audit_db POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5437:5432" volumes: - postgres-audit-data:/var/lib/postgresql/data networks: - domain-registrar-network exdns: build: context: ./exdns dockerfile: Dockerfile container_name: exdns ports: - "5354:5353/udp" - "8000:8000" environment: API_TOKEN: ${EXDNS_API_TOKEN:-changeme} DNS_PORT: "5353" HTTP_PORT: "8000" ZONES_FOLDER: "/data/zones" REPLICATION_QUORUM: "0.5" REPLICATION_TIMEOUT_MS: "2000" volumes: - exdns-zones-data:/data/zones networks: - domain-registrar-network volumes: redis-data: postgres-domain-data: postgres-auth-data: postgres-notification-data: postgres-order-data: postgres-payment-data: postgres-audit-data: exdns-zones-data: networks: domain-registrar-network: driver: bridge