version: "3.8"
services:
  db:
    image: postgres:latest
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=app
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=Letusdoit000
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
  minio:
    image: minio/minio
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - ./volumes/minio:/minio_data
    environment:
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin
    command: minio server /minio_data --console-address ":9001" -address ":9000"
    healthcheck:
      test:
        [
          "CMD",
          "curl",
          "-f",
          "http://192.168.2.1:9001/minio/health/live"
        ]
      interval: 30s
      timeout: 20s
      retries: 3
  pgadmin:
    image: dpage/pgadmin4
    ports:
      - "8082:80"
    environment:
      - PGADMIN_DEFAULT_EMAIL=insiinc@outlook.com
      - PGADMIN_DEFAULT_PASSWORD=Letusdoit000
  # tusd:
  #   image: tusproject/tusd
  #   ports:
  #     - "8080:8080"
  #   environment:
  #     - AWS_REGION=cn-north-1
  #     - AWS_ACCESS_KEY_ID=minioadmin
  #     - AWS_SECRET_ACCESS_KEY=minioadmin
  #   command: -verbose -s3-bucket app -s3-endpoint http://minio:9000 -hooks-http http://host.docker.internal:3000/upload/hook
  #   volumes:
  #     - ./volumes/tusd:/data
  #   extra_hosts:
  #     - "host.docker.internal:host-gateway"
  #   depends_on:
  #     - minio
  tusd:
    image: tusproject/tusd
    ports:
      - "8080:8080"
    command: -verbose -upload-dir /data -hooks-http http://host.docker.internal:3000/upload/hook
    volumes:
      - ./uploads:/data
    extra_hosts:
      - "host.docker.internal:host-gateway"
  nginx:
    image: nice-nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./uploads:/data/uploads  # tusd 上传目录
      - ./web-dist:/usr/share/nginx/html  # 添加前端构建文件的挂载
      - ./config/nginx/entrypoint.sh:/docker-entrypoint.sh
    environment:
      - SERVER_IP=host.docker.internal
    entrypoint: ["/docker-entrypoint.sh"]
    extra_hosts:
      - "host.docker.internal:host-gateway" 
  redis:
      image: redis:latest
      ports:
        - "6379:6379"
      volumes:
        - ./config/redis.conf:/usr/local/etc/redis/redis.conf
        - ./volumes/redis:/data
      command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # restic:
  #   image: restic/restic:latest
  #   environment:
  #     - RESTIC_REPOSITORY=/backup
  #     - RESTIC_PASSWORD=Letusdoit000
  #   volumes:
  #     - ./volumes/postgres:/data
  #     - ./volumes/restic-cache:/root/.cache/restic
  #     - ./backup:/backup   # 本地目录挂载到容器内的 /backup
  #     - ./config/backup.sh:/usr/local/bin/backup.sh # Mount your script inside the container
  #   entrypoint:  /usr/local/bin/backup.sh
  #   depends_on:
  #     - db
  # web:
  #   image: td-web:latest
  #   ports:
  #     - "80:80"
  #   environment:
  #     - VITE_APP_SERVER_IP=192.168.79.77
  #     - VITE_APP_VERSION=0.3.0
  #     - VITE_APP_APP_NAME=两道防线管理后台
  # server:
  #   image: td-server:latest
  #   ports:
  #     - "3000:3000"
  #     - "3001:3001"
  #   environment:
  #     - DATABASE_URL=postgresql://root:Letusdoit000@db:5432/app?schema=public
  #     - REDIS_HOST=redis
  #     - REDIS_PORT=6379
  #     - REDIS_PASSWORD=Letusdoit000
  #     - TUS_URL=http://192.168.2.1:8080
  #     - JWT_SECRET=/yT9MnLm/r6NY7ee2Fby6ihCHZl+nFx4OQFKupivrhA=
  #     - PUSH_URL=http://dns:9092
  #     - PUSH_APPID=123
  #     - PUSH_APPSECRET=123
  #     - MINIO_HOST=minio
  #     - ADMIN_PHONE_NUMBER=13258117304
  #     - DEADLINE_CRON=0 0 8 * * *
  #   depends_on:
  #     - db
  #     - redis

networks:
  default:
    name: remooc
