Docker官方文档教程:使用Docker Compose管理多容器应用

Docker官方文档教程:使用Docker Compose管理多容器应用

docs Source repo for Docker's Documentation docs 项目地址: https://gitcode.com/gh_mirrors/docs3/docs

前言

在现代应用开发中,单一容器往往无法满足复杂应用的需求。Docker Compose作为Docker生态中的重要工具,能够帮助我们轻松定义和管理多容器应用。本文将详细介绍如何使用Docker Compose来简化多容器应用的部署和管理流程。

Docker Compose简介

Docker Compose是一个用于定义和运行多容器Docker应用的工具。它通过一个YAML格式的配置文件(通常命名为compose.yaml)来描述整个应用的架构,包括各个服务、网络配置、数据卷等。使用Compose的主要优势包括:

  1. 简化配置:将所有容器配置集中在一个文件中
  2. 版本控制友好:配置文件可以纳入版本控制系统
  3. 一键部署:通过简单命令即可启动或停止整个应用栈
  4. 环境一致性:确保开发、测试和生产环境的一致性

准备工作

在开始之前,确保你已经:

  1. 安装了Docker Desktop或Docker Engine
  2. 完成了本系列教程前面的部分
  3. 准备好一个多容器应用项目(如本教程中的待办事项应用)

创建Compose文件

首先,在项目根目录下创建compose.yaml文件。这个文件将定义我们的应用服务(Node.js应用)和数据库服务(MySQL)。

├── getting-started-app/
│ ├── Dockerfile
│ ├── compose.yaml
│ ├── node_modules/
│ ├── package.json
│ ├── spec/
│ ├── src/
│ └── yarn.lock

定义应用服务

我们将逐步把之前使用的docker run命令转换为Compose配置。

基础配置

services:
  app:
    image: node:18-alpine
    command: sh -c "yarn install && yarn run dev"

这部分定义了:

  • 使用node:18-alpine镜像
  • 启动命令:安装依赖并运行开发服务器

端口映射

ports:
  - 127.0.0.1:3000:3000

将容器内的3000端口映射到主机的3000端口,仅限本地访问。

工作目录和卷映射

working_dir: /app
volumes:
  - ./:/app

设置工作目录为/app,并将当前目录映射到容器的/app目录,实现代码热更新。

环境变量

environment:
  MYSQL_HOST: mysql
  MYSQL_USER: root
  MYSQL_PASSWORD: secret
  MYSQL_DB: todos

配置应用连接MySQL所需的环境变量。

定义MySQL服务

基础配置

mysql:
  image: mysql:8.0

使用MySQL 8.0官方镜像。

数据持久化

volumes:
  - todo-mysql-data:/var/lib/mysql

volumes:
  todo-mysql-data:

定义命名卷todo-mysql-data,用于持久化MySQL数据。

环境变量

environment:
  MYSQL_ROOT_PASSWORD: secret
  MYSQL_DATABASE: todos

设置MySQL root密码和初始数据库。

完整的compose.yaml

将所有配置组合起来,完整的compose.yaml文件如下:

services:
  app:
    image: node:18-alpine
    command: sh -c "yarn install && yarn run dev"
    ports:
      - 127.0.0.1:3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_DB: todos

  mysql:
    image: mysql:8.0
    volumes:
      - todo-mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: todos

volumes:
  todo-mysql-data:

运行应用栈

启动服务

docker compose up -d

-d参数表示在后台运行。执行后,Docker Compose会:

  1. 创建一个默认网络
  2. 创建指定的数据卷
  3. 启动定义的所有服务

查看日志

docker compose logs -f

-f参数表示实时跟踪日志输出。可以看到两个服务的日志交错显示,方便调试。

访问应用

应用启动后,可以通过http://localhost:3000访问。

管理应用栈

查看运行状态

使用Docker Desktop Dashboard可以直观地看到:

  • 项目分组(基于目录名)
  • 各个服务的运行状态
  • 容器资源使用情况

停止应用

docker compose down

默认不会删除数据卷,如需删除数据卷:

docker compose down --volumes

最佳实践

  1. 版本控制:将compose.yaml纳入版本控制
  2. 环境分离:为不同环境创建不同的Compose文件
  3. 敏感信息:使用环境变量文件管理敏感信息
  4. 资源限制:为服务配置适当的资源限制

总结

通过本教程,我们学习了:

  1. Docker Compose的基本概念和优势
  2. 如何将docker run命令转换为Compose配置
  3. 定义多服务应用的完整流程
  4. 使用Compose命令管理应用生命周期

Docker Compose极大简化了多容器应用的管理,是开发复杂应用的必备工具。掌握Compose的使用,将显著提高你的开发效率和部署体验。

docs Source repo for Docker's Documentation docs 项目地址: https://gitcode.com/gh_mirrors/docs3/docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶承孟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值