第七篇:Docker Compose——一次启动整个项目
【摘要】 如果只有一个容器:docker run ...还能接受。但如果项目需要:NginxWebMySQLRedis手动执行四五条 docker run 就开始麻烦了。这就是 Compose 的用武之地。Compose 是什么?可以把多个容器的配置写进一个 YAML 文件。例如:services: web: image: nginx:alpine ports: - "8080...
如果只有一个容器:
docker run ...
还能接受。
但如果项目需要:
Nginx
Web
MySQL
Redis
手动执行四五条 docker run 就开始麻烦了。
这就是 Compose 的用武之地。
Compose 是什么?
可以把多个容器的配置写进一个 YAML 文件。
例如:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
redis:
image: redis:7-alpine
然后:
docker compose up -d
两个服务一起启动。
查看服务
docker compose ps
查看日志:
docker compose logs
只看 Web:
docker compose logs web
停止:
docker compose down
Compose 真正方便的地方
它把:
镜像
端口
Volume
Network
环境变量
服务依赖
统一写到了一个文件里。
这意味着:
一个项目需要什么服务,不再依赖某个人的记忆。
拿到项目之后:
docker compose up -d
就能开始部署。
MySQL 示例
例如:
services:
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
这样 MySQL 数据就放进了 Volume。
不要把密码提交到 Git
示例里为了方便直接写:
MYSQL_ROOT_PASSWORD: example
但真实项目不应该把生产密码直接写进公开仓库。
应该使用:
- 环境变量
.env- Secrets
- 外部配置管理
具体方案根据部署环境决定。
Compose 的意义
它其实就是把:
“怎么运行这个项目”
变成了一个可以版本控制的文件。
这也是它非常实用的原因。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)