services:
  mysql:
    image: mysql:5.7
    container_name: fu-hsi-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
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    networks:
      - fu-hsi
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-uroot", "-p${MYSQL_PASSWORD}"]
      interval: 10s
      timeout: 10s
      retries: 3
      start_period: 40s
    restart: always

  minio:
    image: quay.io/minio/minio:RELEASE.2023-10-25T06-33-25Z
    container_name: fu-hsi-minio
    command: server --console-address ":9001" /data
    ports:
      - ${MINIO_PORT}:9000
      - ${MINIO_CONSOLE_PORT}:9001
    environment:
      - MINIO_ROOT_USER=${MINIO_USER}
      - MINIO_ROOT_PASSWORD=${MINIO_PASSWORD}
      - TZ=${TIMEZONE}
    volumes:
      - ./minio/data:/data
    networks:
      - fu-hsi
#    healthcheck:
#      test: ["CMD","curl -fs http://localhost/ || exit 1"]
#      interval: 30s
#      timeout: 10s
#      retries: 3
#      start_period: 20s
    restart: always

  neo4j:
    image: neo4j:4.4
    container_name: fu-hsi-neo4j
    ports:
      - ${NEO4J_PORT_HTTP}:7474
      - ${NEO4J_PORT_BOLT}:7687
    environment:
      - NEO4J_AUTH=${NEO4J_USERNAME}/${NEO4J_PASSWORD}
    volumes:
      - ./neo4j/data:/data
      - ./neo4j/logs:/logs
      - ./neo4j/import:/var/lib/neo4j/import
      - ./neo4j/plugins:/var/lib/neo4j/plugins
    networks:
      - fu-hsi
#    healthcheck:
#      test: ["CMD", "curl", "-sS", "http://localhost:7474"]
#      interval: 30s
#      timeout: 10s
#      retries: 5
#      start_period: 40s
    restart: always

  paddleocr:
    image: paddleocr:v2.1
    container_name: fu-hsi-ocr
    ports:
      - ${OCR_PORT_HTTP}:8000
    environment:
      - MINIO_ENDPOINT_URL=${OCR_MINIO_ENDPOINT_URL}
      - MINIO_ACCESS_KEY=${MINIO_USER}
      - MINIO_SECRET_KEY=${MINIO_PASSWORD}
    networks:
      - fu-hsi
    restart: always

  xxl-job-admin:
    depends_on:
      mysql:
        condition: service_started
    image: xuxueli/xxl-job-admin:2.4.1
    container_name: fu-hsi-xxl-job-admin
    ports:
      - ${XXL_JOB_PORT_HTTP}:8080
    environment:
      - PARAMS=--spring.datasource.url=${SPRING_DATASOURCE_URL} --spring.datasource.username=root --spring.datasource.password=${MYSQL_PASSWORD}
    networks:
      - fu-hsi
    restart: always

networks:
  fu-hsi:
    driver: bridge