version: '3'
services:
  austin-mysql:
    environment:
      TZ: Asia/Shanghai
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: "root123_A"
    restart: always
    container_name: austin-mysql
    image: mysql:5.7
    hostname: mysql
    command: --init-file /docker-entrypoint-initdb.d/init.sql
    volumes:
      - ./doc/sql/austin.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "3306:3306"
    networks:
      - app
  austin-redis:
    image: redis:3.2
    ports:
      - "6379:6379"
    restart: always
    container_name: austin-redis
    volumes:
      - ./doc/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
    command:
      /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf"
    networks:
      - app
  austin-zookeeper:
    image: wurstmeister/zookeeper
    container_name: austin-zookeeper
    volumes:
      - "/etc/localtime:/etc/localtime"
    ports:
      - "2181:2181"
    networks:
      - app
  austin-kafka:
    image: wurstmeister/kafka
    container_name: austin-kafka
    volumes:
      - "/etc/localtime:/etc/localtime"
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://austin-kafka:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: austin-zookeeper:2181
      KAFKA_CREATE_TOPICS: "austinBusiness:1:1,austinRecall:1:1,austinTraceLog:1:1"
      KAFKA_HEAP_OPTS: -Xmx512M -Xms256M
    ports:
      - "9092:9092"
    depends_on:
      - austin-zookeeper
    networks:
      - app
  jobmanager:
    image: flink:1.16.1
    ports:
      - "8081:8081"
    command:
      - jobmanager
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
    volumes:
      - ./austin-stream/target/austin-stream-0.0.1-SNAPSHOT.jar:/opt/austin-stream-0.0.1-SNAPSHOT.jar:rw
    depends_on:
      - austin-zookeeper
      - austin-kafka
    networks:
      - app
  taskmanager:
    image: flink:1.16.1
    depends_on:
      - jobmanager
      - austin-zookeeper
      - austin-kafka
    command: taskmanager
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
        taskmanager.numberOfTaskSlots: 2
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
    networks:
      - app
  austin-xxl-job:
    image: xuxueli/xxl-job-admin:2.3.0
    container_name: austin-xxl-job
    ports:
      - "8080:8080"
    environment:
      PARAMS: '--spring.datasource.url=jdbc:mysql://austin-mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=root  --spring.datasource.password=root123_A'
    networks:
      - app
    depends_on:
      - austin-mysql
  austin-nacos:
    container_name: austin-nacos-server
    image: nacos/nacos-server:v2.1.0
    environment:
      - MODE=standalone
      - PREFER_HOST_MODE=hostname
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=austin-mysql
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=root123_A
      - MYSQL_SERVICE_DB_NAME=nacos_config
      - JVM_XMS=128m
      - JVM_XMX=128m
      - JVM_XMN=128m
    volumes:
      - /home/nacos/single-logs/nacos-server:/home/nacos/logs
      - /home/nacos/init.d:/home/nacos/init.d
    ports:
      - 8848:8848
      - 9848:9848
      - 9849:9849
    depends_on:
      - austin-mysql
    restart: on-failure
    networks:
      - app
  austin:
    build:
      context: ./
    ports:
      - "7777:7777"
    restart: always
    container_name: austin
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
    depends_on:
      - austin-redis
      - austin-mysql
      - austin-zookeeper
      - austin-kafka
      - austin-xxl-job
      - austin-nacos
    networks:
      - app
networks:
  app:
