Docker Compose File

version: '3.8'
services:
  zookeeper:
    container_name: zookeeper
    image: confluentinc/cp-zookeeper:latest
    depends_on:
      - card-service-db
      - gameappbff-db
      - game-service-db
      - round-service-db
      - lobby-service-db
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 22181:2181
    networks:
      - atos_network
    healthcheck:
      test: nc -z localhost 2181 || exit -1
      start_period: 15s
      interval: 5s
      timeout: 10s
      retries: 10
 
  kafka:
    image: confluentinc/cp-kafka:latest
    container_name: kafka
    depends_on:
      - zookeeper
      - card-service-db
      - gameappbff-db
      - game-service-db
      - round-service-db
      - lobby-service-db
    ports:
      - 29092:29092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
    healthcheck:
      test: nc -z localhost 9092 || exit -1
      start_period: 15s
      interval: 5s
      timeout: 10s
      retries: 10
 
  kpow:
    image: factorhouse/kpow-ce
    container_name: kpow
    ports:
      - 3000:3000
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  card-service-db:
    image: mysql:latest
    container_name: card-service-db
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: card_db
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - 3307:3306
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  round-service-db:
    image: mysql:latest
    container_name: round-service-db
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: round_db
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - 3308:3306
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  lobby-service-db:
    image: mysql:latest
    container_name: lobby-service-db
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: lobby_db
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - 3309:3306
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  gameappbff-db:
    image: mysql:latest
    container_name: gameappbff-db
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: gameappbff_db
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - 3310:3306
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  game-service-db:
    image: mysql:latest
    container_name: game-service-db
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: game_db
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - 3312:3306
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    volumes:
      - db:/var/lib/mysql
    networks:
      - atos_network
 
  adminer:
    image: adminer:latest
    container_name: adminer
    ports:
      - 8020:8080
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  game-app:
    image: fhictdev/eviden-game_app-fe:latest
    container_name: game-app
    ports:
      - 80:80
    environment:
        - PORT=3001
        - HTTPS=false
        - REACT_APP_SERVER_HOST_IP="0.0.0.0"
    depends_on:
      - game-service
      - gameappbff
      - round-service
      - lobby-service
      - card-service
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
 
  card-service:
    image: fhictdev/eviden-card-svc:csr-v3
    container_name: card-service
    ports:
      - 8001:8001
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://card-service-db/card_db?useSSL=false
      - SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
      - SPRING_RESOURCES_STATIC_LOCATIONS=classpath:/data.cards/
    depends_on:
      kafka:
        condition: service_healthy
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  gameappbff:
    image: fhictdev/eviden-game-app-bff:csr-v3
    container_name: gameappbff
    ports:
      - 8004:8004
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://gameappbff-db/gameappbff_db?useSSL=false
      - SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
      - SPRING_DATASOURCE_USERNAME=myuser
      - SPRING_DATASOURCE_PASSWORD=mypassword
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    depends_on:
      kafka:
        condition: service_healthy
    networks:
      - atos_network
 
  round-service:
    image: fhictdev/eviden-round-svc:csr-v3
    container_name: round-service
    ports:
      - 8002:8002
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://round-service-db:3306/round_db?useSSL=false
      - SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
      - SPRING_DATASOURCE_USERNAME=myuser
      - SPRING_DATASOURCE_PASSWORD=mypassword
    depends_on:
      kafka:
        condition: service_healthy
    deploy:
      restart_policy:
        condition: on-failure
        delay: 45s
        max_attempts: 3
        window: 180s
    networks:
      - atos_network
 
  lobby-service:
    image: fhictdev/eviden-lobby-svs:csr-v3
    container_name: lobby-service
    ports:
      - 8006:8006
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://lobby-service-db:3306/lobby_db?useSSL=false
      - SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
      - SPRING_DATASOURCE_USERNAME=myuser
      - SPRING_DATASOURCE_PASSWORD=mypassword
    depends_on:
      kafka:
        condition: service_healthy
#    deploy:
#      restart_policy:
#        condition: on-failure
#        delay: 45s
#        max_attempts: 3
#        window: 180s
    networks:
      - atos_network
 
  game-service:
    image: fhictdev/eviden-game-svc:csr-v3
    container_name: game-service
    ports:
      - 8005:8005
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://game-service-db:3306/game_db?useSSL=false
      - SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
    depends_on:
      kafka:
        condition: service_healthy
#    deploy:
#      restart_policy:
#        condition: on-failure
#        delay: 45s
#        max_attempts: 3
#        window: 180s
    networks:
      - atos_network
 
  api-gateway:
    image: fhictdev/eviden-api-gateway:v3
    container_name: api-gateway
    ports:
      - 8080:8080
    networks:
      - atos_network
 
volumes:
  db:
 
networks:
  atos_network:
    driver: bridge