version: "3"

services:
  nginx:
    image: nginx:1.20.2
    ports:
      - "9100:80"
      - "9103:443"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - "./nginx/dist:/usr/share/nginx/html"
      - "./nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro"
      - "./nginx/key:/etc/nginx/key/"
    links:
      - adminNet
  mysql:
    image: mysql:5.7
    ports:
      - 9101:3306
    restart: unless-stopped
    privileged: true
    ulimits:
       nproc: 655350
       nofile:
         soft: 131072
         hard: 400000
    #healthcheck:
    #  test: "/usr/bin/mysql --user=root --password=root --execute \"SHOW DATABASES;\""
    #  interval: 10s # 间隔时间
    #  timeout: 3s  # 超时时间
    #  retries: 50   # 重试次数
    environment:
      MYSQL_ROOT_HOST: "%"
      MYSQL_DATABASE: admin
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Shanghai
    volumes:
      - ./mysql/mysql:/var/lib/mysql
      - ./mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
  redis:
    image: 'redis:latest' # 使用最新版本的 Redis 镜像,也可以指定特定版本如 'redis:6.2.7'
    container_name: my-redis # 自定义容器名称
    ports:
      - '6379:6379' # 映射宿主机的 6379 端口到容器的 6379 端口
    volumes: # 持久化数据
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/data:/data:rw
      - ./redis/logs:/logs
    #command: ['redis-server', '--appendonly', 'yes'] # 启用AOF持久化
    command: ['redis-server','/usr/local/etc/redis/redis.conf']
    environment: # 设置环境变量,例如密码
      - REDIS_PASSWORD=123456
  adminNet:
    image: mcr.microsoft.com/dotnet/aspnet:6.0
    ports:
      - "9102:5050"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - "./app:/app"
    working_dir: /app
    command: ["/app/wait-for-it.sh", "mysql:3306", "-t", "120", "--","dotnet", "Admin.NET.Web.Entry.dll"]
    depends_on:
      - mysql
      - redis