Docker Compose 入门:用一条命令编排多容器应用
在日常开发中,很多应用不止一个容器:后端服务、数据库、缓存、消息队列常常要一起跑。一个一个敲 docker run 既繁琐又容易出错,Docker Compose 就是为此设计的编排工具——用一份 YAML 文件声明所有服务,再用一条命令把它们全部拉起。
什么是 Docker Compose
Compose 通过 docker-compose.yml 描述应用的完整栈。每个 service 就是一个容器,你可以声明镜像、端口映射、环境变量、数据卷以及服务之间的依赖关系。Compose 会为项目自动创建一张网络,服务之间直接用服务名互访,不需要记住 IP。
最小示例:Web + Redis
在项目根目录创建 docker-compose.yml:
version: "3.8"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- redis
redis:
image: redis:7-alpine
volumes:
- redis-data:/data
volumes:
redis-data:
运行以下命令即可一键启动整栈:
docker compose up -d
Compose 会先拉起 redis(因为 web 声明了 depends_on),再启动 web,并将 8080 端口映射到宿主机。浏览器访问 localhost:8080 就能看到 Nginx 欢迎页。
用 docker compose ps 可查看各服务状态,docker compose logs -f web 可实时查看指定服务的日志,docker compose down 则停止并清理容器和网络。
常用概念速览
- service:一个容器的运行配置,通常对应一个微服务或组件。
- image / build:直接使用现成镜像,或从 Dockerfile 构建。
- ports:宿主机到容器的端口映射,格式为 “主机端口:容器端口”。
- environment:注入环境变量,支持直接列出或用 env_file 读取 .env 文件。
- volumes:把目录或命名卷挂载进容器,常用于持久化数据库数据。
- depends_on:声明启动顺序的软依赖,实际是否可用还需服务自身就绪。
实战建议
开发环境可以把数据库、缓存、消息队列都写进一份 compose 文件,团队新人 clone 仓库后一条命令就跑起全部依赖。记得把 .env 和敏感的 compose 配置加入 .gitignore,不要把密钥提交到仓库。需要时还可以通过 docker compose --profile dev up 来按环境加载不同配置。
掌握 Compose 后,本地多容器应用的交付和协作会顺畅很多。
- 点赞
- 收藏
- 关注作者
评论(0)