如何使用Docker Compose编排多个容器?
# Docker Compose 多容器编排|极简速通(一看就会、直接能用) 我给你**最实用、最通用、最不容易出错**的一套流程,不用复杂概念,照着写就能跑起来。 --- # 一、核心一句话 **Docker Compose = 用一个 YAML 文件,一键启动/停止/管理多个容器** 比如:Nginx + MySQL + Redis + SpringBoot 一起启动。 --- # 二、3 步搞定多容器编排 ## 1. 创建文件 在项目文件夹下新建: ``` docker-compose.yml ``` ## 2. 编写配置(复制就能用) 下面是**最标准模板**:Web + Redis + MySQL 三容器联动 ```yaml version: '3.8' services: # 容器1:Web服务(你的项目) web: image: nginx:alpine ports: - "80:80" volumes: - ./html:/usr/share/nginx/html depends_on: - redis - mysql restart: always # 容器2:Redis redis: image: redis:alpine restart: always # 容器3:MySQL mysql: image: mysql:8.0 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: testdb volumes: - mysql-data:/var/lib/mysql restart: always # 数据卷(持久化 MySQL 数据) volumes: mysql-data: ``` ## 3. 一键启动 ```bash docker-compose up -d ``` --- # 三、最常用 5 条指令(背会就够) ```bash # 后台启动所有容器 docker-compose up -d # 停止所有容器(不删除数据) docker-compose stop # 停止并删除容器、网络 docker-compose down # 查看日志 docker-compose logs -f # 重启所有服务 docker-compose restart ``` --- # 四、YAML 里关键字的意思(一看就懂) ```yaml version: '3.8' # 版本号 services: # 所有容器写在这里 容器名: # 自定义,如 web mysql redis image: 镜像名 # 使用什么镜像 ports: # 端口映射 宿主机:容器 - "80:80" environment: # 环境变量(密码、库名等) volumes: # 目录挂载(持久化) depends_on: # 依赖关系,先启动谁 restart: always # 崩溃自动重启 ``` --- # 五、容器之间怎么互相访问? **重点:容器名 = 域名** 比如: - web 容器要连 MySQL - 不要写 `127.0.0.1` - 直接写容器名 **mysql** 示例连接地址: ``` jdbc:mysql://mysql:3306/testdb ``` --- # 六、最常用组合模板(直接复制) ## 1)Nginx + PHP + MySQL ```yaml version: '3.8' services: nginx: image: nginx:alpine ports: - "80:80" volumes: - ./html:/var/www/html depends_on: - php php: image: php:fpm-alpine volumes: - ./html:/var/www/html mysql: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: root ``` ## 2)Vue/React + Nginx ```yaml services: web: image: nginx ports: - "80:80" volumes: - ./dist:/usr/share/nginx/html ``` --- # 七、你只要告诉我 3 个信息,我能直接给你生成可运行的 docker-compose.yml 1. 你要启动哪些容器?(如 MySQL + Redis + SpringBoot) 2. 端口分别是什么? 3. 需不需要挂载目录持久化?


