version: '3'

services:
  mysql:
    image: mysql:8.0.24
    container_name: mysql
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # root 密码
      MYSQL_ROOT_PASSWORD: root
      # 初始化数据库(后续的初始化sql会在这个库执行)
      MYSQL_DATABASE: ry-vue
    ports:
      - 3306:3306
    volumes:
      # 数据挂载
      - /docker/mysql/data/:/var/lib/mysql/
      # 配置挂载
      - /docker/mysql/conf/:/etc/mysql/conf.d/
      # 初始化目录挂载
      - /docker/mysql/init/:/docker-entrypoint-initdb.d/
    command:
      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    privileged: true
    restart: always
    networks:
      ruoyi_net:
        ipv4_address: 172.30.0.36

  nginx-web:
    # 如果需要指定版本 就把 latest 换成版本号
    image: nginx:latest
    container_name: nginx-web
    ports:
      - 80:80
      - 443:443
    volumes:
      # 证书映射
      - /docker/nginx/cert:/etc/nginx/cert
      # 配置文件映射
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      # 页面目录
      - /docker/nginx/html:/usr/share/nginx/html
      # 日志目录
      - /docker/nginx/log:/var/log/nginx
      # 主机本机时间文件映射 与本机时间同步
      - /etc/localtime:/etc/localtime:ro
    privileged: true
    restart: always
    networks:
      - ruoyi_net

  redis:
    image: redis:6.2.1
    container_name: redis
    ports:
      - 6379:6379
    environment:
      # 设置环境变量 时区上海 编码UTF-8
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
    volumes:
      # 配置文件
      - /docker/redis/conf/redis.conf:/redis.conf:rw
      # 数据文件
      - /docker/redis/data:/data:rw
    command: "redis-server --appendonly yes"
    privileged: true
    restart: always
    networks:
      ruoyi_net:
        ipv4_address: 172.30.0.48

  ruoyi-admin:
    image: "${REGISTER}/ruoyi-admin:${TAG}"
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    restart: always
    networks:
      ruoyi_net:
        ipv4_address: 172.30.0.60

networks:
  ruoyi_net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.0.0/16
