version: '3.8'

services:
  mysql:
    image: mysql:5.7
    container_name: mysql57
    environment:
      MYSQL_ROOT_PASSWORD: root@1234
      MYSQL_DATABASE: ${REVIVE_DB_NAME}
      MYSQL_USER: ${REVIVE_DB_USER}
      MYSQL_PASSWORD: ${REVIVE_DB_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
      - ./mysql/my.cnf:/etc/mysql/my.cnf
      - ./mysql/revive_DSP:/docker-entrypoint-initdb.d/revive_DSP.sql
    networks:
      - backend

  revive:
    build:
      context: ./ReviveAd
    container_name: revivedsp
    environment:
      REVIVE_DB_HOST: ${REVIVE_DB_HOST}
      REVIVE_DB_NAME: ${REVIVE_DB_NAME}
      REVIVE_DB_USER: ${REVIVE_DB_USER}
      REVIVE_DB_PASSWORD: ${REVIVE_DB_PASSWORD}
    ports:
      - "8080:80"
    depends_on:
      - mysql
    volumes:
      - ./ReviveAd/Revive:/var/www/html
    working_dir: /var/www/html
    networks:
      - backend

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmindsp
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
      PMA_USER: ${REVIVE_DB_USER}
      PMA_PASSWORD: ${REVIVE_DB_PASSWORD}
    ports:
      - "1808:80"
    depends_on:
      - mysql
    networks:
      - backend

  golang:
    build:
      context: ./dspgolang
    container_name: dspgolang
    environment:
      CLICKHOUSE_HOST: ${CLICKHOUSE_HOST}  # Use the ClickHouse external IP or service name
      CLICKHOUSE_PORT: "9000"
      CLICKHOUSE_USER: ${CLICKHOUSE_USER}
      CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
      CLICKHOUSE_DB: ${CLICKHOUSE_DB}
      DB_DRIVER: "mysql"
      DB_HOST: ${REVIVE_DB_HOST}  # Use the service name 'mysql' for the internal Docker network
      DB_PORT: "3306"
      DB_USER: ${REVIVE_DB_USER}
      DB_PASS: ${REVIVE_DB_PASSWORD}
      DB_NAME: ${REVIVE_DB_NAME}
      BLOWFISH_KEY: "advanceddspgo"
      TABLE_PREFIX: "rv_"
      REDIS_HOST: "redis"
      REDIS_PORT: "6379"
      REDIS_PASS: ""
      REDIS_DB_NAME: "0"
      REDIS_EXP_IN_MIN: "1"
    depends_on:
      - mysql
      - redis
      - clickhouse
    networks:
      - backend
    ports:
      - "2808:8080"  # Assuming your Go app uses port 8080 internally; change as needed

  redis:
    image: redis:7.0
    container_name: redis
    ports:
      - "9736:6379"
    command: redis-server --appendonly yes
    networks:
      - backend


  clickhouse:
   image: clickhouse/clickhouse-server:22.0
   container_name: clickhouse22
   ports:
     - "3218:8123"
     - "9999:9000"
   volumes:
     - clickhouse_data:/var/lib/clickhouse
   environment: 
     - CLICKHOUSE_DB=${CLICKHOUSE_DB}
     - CLICKHOUSE_USER=${CLICKHOUSE_USER}
     - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
   networks:
     - backend


volumes:
  mysql_data:
  clickhouse_data:

networks:
  backend:
    driver: bridge

