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通



