Docker Compose 入门:一个 YAML 管理全部容器
【摘要】 多容器项目还在敲一长串 docker run?docker-compose.yml 三要素(services/networks/volumes)+ 服务名互连,一条命令起停全家桶。
上次聊了镜像分层,这次讲讲多容器编排。当你开始写"先起数据库、再起后端、再起前端"这样的项目时,敲一长串 docker run 就该换 Docker Compose 了。
一、一个文件管所有容器
Compose 把所有容器的配置写进一个 docker-compose.yml:
services:
web:
image: myapp:latest
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
一条命令全启动:docker compose up -d;全停止:docker compose down。加 -d 是后台运行。
二、容器之间怎么通信
Compose 会自动创建一个网络,服务名就是主机名。比如 web 容器里连数据库,主机名直接写 db:
# 应用配置里不用写 IP
DB_HOST=db
DB_PORT=3306
depends_on 只保证启动顺序,不保证数据库"已就绪"——应用要有重试逻辑,或用 healthcheck。
三、数据持久化用 volumes
容器删了数据就没了。上面例子把 MySQL 数据目录挂到命名卷 db-data,down 不会删卷,要连卷一起删得用 down -v——这个区别很重要。
小结
Compose 三要素:services(容器)、networks(自动创建)、volumes(数据)。本地开发环境用它管理,一条命令起停全家桶。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)