# Auth环境

## 文件方式安装环境

使用docker-compose有的时候会因为版本不同，但是配置文件主要内容就是这些。需要注意版本问题

**mysql配置问题**

| **特性**     | `**my.cnf**`                 | `**conf.d**` **目录**      |
| ------------ | ---------------------------- | -------------------------- |
| **文件类型** | 单个文件                     | 目录，包含多个 `.cnf` 文件 |
| **配置方式** | 集中式配置                   | 分布式配置                 |
| **优先级**   | 高（覆盖 `conf.d` 中的配置） | 低（被 `my.cnf` 覆盖）     |
| **适用场景** | 全局配置，核心配置           | 模块化配置，便于扩展和维护 |

------

```yaml
name: auth-dependence  # 定义该配置的名称为 auth-dependence
services: # 定义服务列表

  # 安装MySQL
  mysql: # 定义 MySQL 服务
    container_name: mysql_master  # 容器名称为 mysql_master
    image: mysql:8.0.33  # 使用 MySQL 8.0.33 版本的镜像
    ports:
      - "3306:3306"  # 将宿主机的 3306 端口映射到容器的 3306 端口
    environment:
      - MYSQL_ROOT_PASSWORD=123456  # 设置 MySQL 的 root 用户密码为 123456
      - TZ=Asia/Shanghai  # 设置时区为亚洲/上海
    volumes:
      # - ~/docker/docker_data/mysql/mysql_master/etc/my.cnf:/etc/my.cnf # 如果需要创建配置文件
      - ~/docker/docker_data/mysql/mysql_master/etc/mysql:/etc/mysql/conf.d  # 挂载 MySQL 配置文件目录
      - ~/docker/docker_data/mysql/mysql_master/data:/var/lib/mysql  # 挂载 MySQL 数据目录
      - ~/docker/docker_data/mysql/mysql_master/backup:/backup  # 挂载备份目录
    command:
      - "--log-bin=mysql-bin"  # 启用二进制日志
      - "--server-id=1"  # 设置服务器 ID 为 1
      - "--collation-server=utf8mb4_unicode_ci"  # 设置默认的排序规则为 utf8mb4_unicode_ci
      - "--character-set-server=utf8mb4"  # 设置默认的字符集为 utf8mb4
      - "--lower-case-table-names=1"  # 设置表名存储为小写
    restart: always  # 设置容器总是自动重启
    privileged: true  # 赋予容器特权模式
    networks:
      - auth  # 将 MySQL 服务加入到 auth 网络

  # 安装Redis
  redis: # 定义 Redis 服务
    container_name: redis_master  # 容器名称为 redis_master
    image: redis:7.0.10  # 使用 Redis 7.0.10 版本的镜像
    ports:
      - "6379:6379"  # 将宿主机的 6379 端口映射到容器的 6379 端口
    volumes:
      # - ~/docker/docker_data/redis_master/redis.conf:/etc/redis/redis.conf # 需要创建配置文件
      - ~/docker/docker_data/redis_master:/etc/redis  # 挂载 Redis 配置文件目录
      - ~/docker/docker_data/redis_master/data:/data  # 挂载 Redis 数据目录
    command:
      - "--appendonly yes"  # 启用 AOF 持久化
      - "--daemonize no"  # 不以守护进程方式运行
      - "--requirepass 123456"  # 设置 Redis 访问密码为 123456
      - "--tcp-keepalive 300"  # 设置 TCP keepalive 时间为 300 秒
    restart: always  # 设置容器总是自动重启
    networks:
      - auth  # 将 MySQL 服务加入到 auth 网络

  # 安装 Minio
  minio: # 定义 Minio 服务
    image: minio/minio  # 使用 Minio 官方镜像
    container_name: minio_master  # 容器名称为 minio_master
    ports:
      - "9000:9000"  # 将宿主机的 9000 端口映射到容器的 9000 端口
      - "9090:9090"  # 将宿主机的 9090 端口映射到容器的 9090 端口
    volumes:
      - ~/docker/docker_data/minio/data:/data  # 挂载 Minio 数据目录
    environment:
      - MINIO_ROOT_USER=bunny  # 设置 Minio 的 root 用户名为 bunny
      - MINIO_ROOT_PASSWORD=02120212  # 设置 Minio 的 root 用户密码为 02120212
    command: "server /data --console-address :9090"  # 启动 Minio 服务并指定控制台地址
    restart: always  # 设置容器总是自动重启
    networks:
      - auth  # 将 MySQL 服务加入到 auth 网络

networks: # 定义网络
  auth: # 定义名为 auth 的网络
    name: auth  # 网络名称为 auth
    driver: bridge  # 使用 bridge 驱动（默认）
```
