第七篇:Docker Compose——一次启动整个项目

举报
yd_220371319 发表于 2026/09/16 22:10:36 2026/09/16
【摘要】 如果只有一个容器: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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。