Docker Compose 多容器编排

1.何为Docker Compose

定义:Docker Compose 是一个用于定义和运行多容器 Docker 应用程序 的工具。通过一个 docker-compose.yml 文件来配置应用程序需要的所有服务,然后只需一个命令 (docker compose up),就能启动所有配置好的容器。

作用:使用 yml 文件定义多个容器,一条命令统一启停,解决多服务依赖部署问题

2.docker-compose.yml 核心写法

docker run 参数 docker-compose.yml 写法 你的实战经验对照
-d detach: true 后台运行
--name my-web container_name: my-web 起名字
-p 8080:80 ports: - "8080:80" 端口映射
-v my-vol:/data volumes: - my-vol:/data 数据挂载
--network net1 networks: - net1 网络

3.Nginx+MySQL 组合服务

1.创建compose的工作目录

bash 复制代码
#创建Compose的工作目录
mkdir /opt/compose-demo && cd /opt/compose-demo
mkdir html
echo "docker-compose 多容器测试" > html/index.html

2. 编写yml文件

bash 复制代码
#编写yml文件
vim docker-compose.yml
#声明一个命名数据卷,名称 mysql-data
volumes:
  mysql-data:

#定义两个服务容器 mysql、nginx
services:

  mysql:
      #拉取镜像:mysql 版本 5.7
      image: mysql:5.7
      #自定义容器名字
      container_name: compose-mysql
      ports:
        - "3307::3306"
      #把上面定义的命名卷 mysql-data 挂载到容器内 MySQL 数据目录 /var/lib/mysql
      volumes:
        - mysql-data:/var/lib/mysql
      environment:
        MYSQL_ROOT_PASSWORD: 123456
      #容器退出、服务器重启后,自动重启 MySQL 容器
      restart: always

   nginx:
       image: nginx
       container_name: compose-nginx
       ports:
         - "8080:80"
       volumes:
         - ./html:/usr/share/nginx/html
       depends_on:
         - mysql
       restart: always

#写完后检擦是否有语法问题
docker compose config

3.启动compose服务并验证

bash 复制代码
# 后台启动全部服务
docker-compose up -d

#查看当前运行的 Compose 项目
docker compose ls

# 查看运行容器
docker-compose ps

#查看卷
docker volume ls

#验证nginx服务
curl http://127.0.0.1:8080

#验证容器间网络通信
docker exec compose-nginx curl -v mysql:3306

#拿到返回的IP地址后,在宿主机看是否能ping通

相关推荐
魏 无羡6 小时前
webclient
java·webclient
神仙别闹6 小时前
基于 C++ 实现两个有序链表序列的交集
java·c++·链表
xhaxy6 小时前
docker
docker·容器·eureka
swordbob7 小时前
ReentrantLock 与 AQS 完整学习手册
java·开发语言
m0_587383008 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥8 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
一技安身9 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
七夜zippoe9 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
时凌云.9 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
Despacito100610 小时前
Java后端性能探查工具速查表
java·开发语言