0Pricing
DevOps Bootcamp · 课时

编写 Compose 文件

学习用于定义服务、网络和卷的 `docker-compose.yml` YAML 语法

编写 Compose 文件 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

Compose 文件:应用蓝图

欢迎学习编写 Docker Compose 文件!docker-compose.yml 文件是定义和运行多容器 Docker 应用的蓝图。

它使用 YAML 语法,在一个文件中配置应用程序的服务、网络和卷。

编写 Compose 文件 — 插图 1

YAML:快速复习

Docker Compose 文件使用 YAML(YAML Ain't Markup Language)编写。这是一种便于人类阅读的数据序列化标准。

  • 键值对:key: value
  • 列表:列表项以连字符开头(- item)
  • 缩进:对于定义结构和层级关系至关重要。请使用空格,不要使用制表符!

`version` 键

每个 docker-compose.yml 文件都以 version 键开头。它指定 Compose 文件格式的版本,帮助 Docker Compose 理解如何解析您的文件。

对于大多数现代应用,建议使用 '3.8' 或类似的 '3.x' 版本。

version: '3.8'

定义 `services`

services 部分用于定义组成应用程序的各个容器(服务)。每个服务代表一个组件,例如 Web 服务器或数据库。

在 services 下,您可以使用自选的名称列出每个服务。

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

服务的 `image` 和 `ports`

在服务定义中,image 指定要使用的 Docker 镜像(例如 nginx:latest)。ports 键将容器端口映射到主机端口,从而允许外部访问。

  • "80:80" 将主机端口 80 映射到容器端口 80。
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

服务的 `volumes`

服务中的 volumes 键允许您将主机计算机中的路径挂载到容器中,或使用命名卷进行持久化存储。

此示例会将本地目录 ./app 挂载到容器内的 /usr/src/app。

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

服务的 `environment` 变量

使用 environment 键向服务的容器传递环境变量。这对于可能因环境不同而变化的配置至关重要,例如数据库连接字符串。

变量可以用键值对或列表格式列出。

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

顶层的 `networks` 和 `volumes`

除了在服务内部定义自定义的命名卷和网络之外,您还可以在 docker-compose.yml 文件的顶层声明它们。

这样可以更有条理地定义数据持久化和容器间通信,并且便于重复使用。

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

整合所有内容

下面是一个结合所学内容的小示例。它定义了一个 Web 服务和一个数据库服务,并使用了镜像、端口和命名卷。

请注意,缩进会创建结构。

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

检查 Compose 文件

以下哪个 YAML 代码片段正确地定义了一个名为“api”的 Docker Compose 服务,使用“myapi:1.0”镜像,并将容器端口 3000 映射到主机端口 8080?

回顾:Compose 文件基础

做得很好!您已经学习了编写 docker-compose.yml 文件的基础知识。

  • 文件以 version 开始。
  • services 用于定义应用程序组件。
  • 每个服务都会使用一个 image,可以公开 ports,使用 volumes 实现持久化,并设置 environment 变量。
  • 顶层的 networks 和 volumes 支持高级配置。

掌握这种 YAML 结构是编排多容器应用程序的关键!

常见问题解答

「编写 Compose 文件」课时是免费的吗?

是的 — 「编写 Compose 文件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「编写 Compose 文件」这节课中我会学到什么?

学习用于定义服务、网络和卷的 `docker-compose.yml` YAML 语法 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「编写 Compose 文件」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是 Docker Compose
  2. 编写 Compose 文件
  3. 部署多服务应用
  4. 环境变量与 .env 文件
← 返回 DevOps Bootcamp