services:
  mysql:
    image: mysql:5.7
    container_name: know-sub-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
      - TZ=${TIMEZONE}
    command:
      --max_connections=100
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --default-authentication-plugin=mysql_native_password
      --tls_version="TLSv1.2,TLSv1.3"
    ports:
      - ${MYSQL_PORT}:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./know_sub_init.sql:/docker-entrypoint-initdb.d/know_sub_init.sql
    networks:
      - know-sub-network
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-uroot", "-p${MYSQL_PASSWORD}" ]
      interval: 10s
      timeout: 10s
      retries: 3
      start_period: 40s
    restart: always
  know-sub-web:
    depends_on:
      mysql:
        condition: service_started
    image: know-sub-web:1.0.0
    container_name: know-sub-web
    ports:
      - ${WEB_HTTP_PORT}:9201
    volumes:
      - ./know-sub-web/:/data/know_sub/web/
    command:
      --spring.profiles.active=${SPRING_PROFILES_ACTIVE}
      --datasource.password=${MYSQL_PASSWORD}
    environment:
      - TZ=${TIMEZONE}
    networks:
      - know-sub-network
    restart: always
  know-sub-nginx:
    depends_on:
      know-sub-web:
        condition: service_started
    image: know-sub-nginx:1.0.0
    container_name: know-sub-nginx
    ports:
      - ${NGINX_HTTP_PORT}:80
    volumes:
      - ./know-sub-nginx/html/:/usr/share/nginx/html/
    environment:
      - TZ=${TIMEZONE}
      - KNOW_SUB_SERVERS=${KNOW_SUB_SERVERS}
    networks:
      - know-sub-network
    restart: always

networks:
  know-sub-network:
    driver: bridge