这个docker-compose文件定义了一个Spring Boot微服务、一个Redis实例和一个MySQL数据库,并配置了它们之间的网络连接和端口映射

# docker-compose文件版本号,有v1、v2c和v3版本,即它遵循的是 Docker Compose 3.7 版本的规范
version: "3"
 
# 在services下,定义要运行的容器。每个服务定义了一个容器,包括它的配置和依赖。
services:
  #新建microService、redis和mysql三个容器实例
  microService:
     # 镜像是springboot_docker,TAG是1.0
     image: springboot_docker:1.0   
     # 容器名称,如果不指定,会生成一个服务名加上前缀的容器名
     container_name: ms01  
     # 端口映射,将宿主机的6001端口映射到容器的6001端口
     ports:  
        - "6001:6001"  
     # 卷映射,将宿主机的/app/microService目录映射到容器的/data目录
     volumes:
        - /app/microService:/data 
     # 将该容器连接到名为springboot_network的网络 
     networks:
        - springboot_network  
     # 配置该容器服务所依赖的容器服务
     depends_on:  
         - redis
         - mysql
 
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - springboot_network
    # 启动容器时执行的命令,使用/etc/redis/redis.conf作为配置文件来启动Redis服务
    command: redis-server /etc/redis/redis.conf  
  mysql:
image: mysql:5.7
# 设置环境变量,用于配置MySQL,包括root密码、数据库名、用户名和密码等
    environment:  
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db_springboot'
      MYSQL_USER: 'springboot'
      MYSQL_PASSWORD: 'springboot'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql  # MySQL的数据目录
      - /app/mysql/conf/my.cnf:/etc/my.cnf  # 配置文件
      - /app/mysql/init:/docker-entrypoint-initdb.d  # 初始化脚本
    networks:
      - springboot_network
    # 启动MySQL时指定了默认的认证插件为mysql_native_password,这是为了解决外部无法访问MySQL的问题
    command: --default-authentication-plugin=mysql_native_password  
networks:
  # 创建 springboot_network 网桥网络
  springboot_network: