来宾市网站建设_网站建设公司_Linux_seo优化
2025/12/22 10:45:55 网站建设 项目流程

在容器化已成主流的今天,大部分人可能已经熟悉 Docker,但当需要同时管理多个容器、配置复杂参数、保证可重复部署时,Docker Compose才是提升效率的关键武器。

理解 Docker Compose核心概念、学会编写 compose.yml、掌握常用命令,并通过三个典型场景展示如何真正“把它用起来”。


什么是 Docker Compose?

Docker Compose 是一个用于定义和运行多容器应用的工具。你只需要在一个 YAML 文件中描述:

  • 有哪些容器?

  • 每个容器如何构建?

  • 需要哪些端口、环境变量、卷?

  • 它们之间如何互联?

然后一条命令:

docker compose up -d

多容器环境瞬间启动!实现环境配置的真正“一键重现”。


为什么要使用 Docker Compose?

功能

单独执行 docker

Docker Compose

启动多个容器

繁琐重复

一个命令统一管理

环境变量

需要手动传递

YAML 结构化配置

网络互通

需要手动创建网络

自动创建默认网络

卷管理

手动 -v 挂载

声明式配置

项目迁移

复杂

拷贝配置即可部署

Docker Compose = 可复制、可维护、多容器协作的最佳实践。


Docker Compose 文件结构详解

Docker Compose 采用compose.yml文件,一般包含这些核心部分:

version: "3.9" services: web: image: nginx:1.27 ports: - "80:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: "123456" volumes: - dbdata:/var/lib/mysql volumes: dbdata:

关键配置说明

字段

作用

services

定义每个容器服务

image

指定要运行的镜像

build

从本地 Dockerfile 构建镜像

ports

宿主机与容器的端口映射

volumes

数据持久化或挂载目录

environment

环境变量

depends_on

设置服务启动顺序

networks

配置容器网络


常用 Docker Compose 命令

启动 / 停止相关命令

docker compose up
  • 会创建容器

  • 创建网络

  • 创建卷

  • 启动所有服务

常用参数:
  • -d # 后台运行(最常用)

  • --build # 重新构建镜像

作用:

启动所有服务

使用场景:
  • 启动整个项目

  • 重启开发环境

  • 部署生产服务


docker compose down
常用参数:
  • -v # 删除 volume

  • --rmi all # 删除所有镜像

作用:

停止所有服务并删除容器、网络

使用场景:
  • 清理整个项目

  • 测试环境重复部署

  • 重置开发环境


docker compose stop docker compose start
  • stop:停止容器,但不删除

  • start:仅启动已有容器

使用场景:

维护容器但不删除数据时


docker compose restart
使用场景:

修改配置后快速重启服务


查看容器状态 / 日志

docker compose ps
作用:

查看当前 compose 项目所有容器状态(相当于 docker ps 的 compose 版本)


docker compose logs
常用参数:
  • -f # 实时查看日志

  • service-name # 查看某个服务日志

使用场景:
  • 调试容器是否启动成功

  • 查看项目运行状态


构建镜像 / 拉取镜像

docker compose build
常用参数:
  • --no-cache # 不使用缓存

  • --quiet # 静默输出

使用场景:
  • 修改 Dockerfile 后重新构建

  • 不用 docker build,全通过 compose 管理


docker compose pull
场景:
  • 更新所有服务镜像

  • CI/CD 自动部署前


docker compose push
场景:

推送镜像到镜像仓库(CI/CD 使用)


进入容器 / 执行命令

docker compose exec SERVICE bash
场景:
  • 进入某个容器的终端(首选方式)

  • 调试应用、运行命令

前提:容器正在运行


docker compose run SERVICE bash

与 exec 区别:

命令

作用

exec

正在运行的容器里执行

run

创建一个新容器

并执行命令

使用场景:

  • 只想临时跑一个命令,不需要现有容器

  • 数据迁移、数据库初始化脚本


查看项目文件 / 配置信息

docker compose config
场景:
  • 检查 compose 文件是否语法正确

  • 查看变量替换结果(env 文件)

  • 调试 compose 配置时非常有用

性能相关:扩容 / 缩容

docker compose up --scale web=3 -d
作用:

扩容某个服务实例数量(比如 web 服务扩成 3 个实例)

场景:
  • 微服务自动扩容

  • 高并发 test 环境


清理资源

docker compose rm
场景:
  • • 删除已经停止的容器

  • • 保留 volume 和 network


docker compose down -v
场景:
  • 删除所有数据卷(会丢数据)

  • 开发测试环境重置


所有常用命令总结表(速查版)

命令

作用

docker compose attach

将本地标准输入/输出/错误流附加到正在运行的服务容器

docker compose build

构建或重新构建服务

docker compose commit

将服务容器的更改创建为新的镜像

docker compose config

解析、合并并以规范格式输出 Compose 配置

docker compose cp

在服务容器和本地主机之间复制文件/文件夹

docker compose create

为服务创建容器但不启动

docker compose down

停止并删除容器、网络(可选卷/镜像)

docker compose events

接收容器的实时事件流

docker compose exec

在运行中的容器内执行命令

docker compose export

将服务容器的文件系统导出为 tar 包

docker compose images

列出由 Compose 创建的容器所使用的镜像

docker compose kill

强制停止服务容器

docker compose logs

查看服务容器日志

docker compose ls

列出正在运行的 Compose 项目

docker compose pause

暂停服务

docker compose port

查看服务端口的映射关系

docker compose ps

列出容器

docker compose publish

发布 Compose 应用

docker compose pull

拉取服务镜像

docker compose push

推送服务镜像

docker compose restart

重启服务容器

docker compose rm

删除已停止的服务容器

docker compose run

在服务上运行一次性命令(创建新容器)

docker compose scale

为服务扩容或缩容

docker compose start

启动已创建但未运行的容器

docker compose stats

显示容器资源使用情况(类似 top)

docker compose stop

停止服务

docker compose top

显示容器中的运行进程

docker compose unpause

取消暂停服务

docker compose up

创建并启动容器

docker compose version

显示 Docker Compose 版本信息

docker compose volumes

列出卷

docker compose wait

阻塞直到服务容器退出

docker compose watch

监听构建上下文变化,自动重建/刷新容器


实战场景 1:Nginx + PHP-FPM(经典 LNMP)

适用于本地开发、测试环境。

version: "3.9" services: nginx: image: nginx:latest ports: - "8080:80" volumes: - ./code:/var/www/html - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - php php: image: php:8.3-fpm volumes: - ./code:/var/www/html

启动:

docker compose up -d

浏览器访问:

http://localhost:8080

实战场景 2:WordPress 一键部署(含 MySQL)

version: '3.9' services: db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress volumes: - db_data:/var/lib/mysql wordpress: image: wordpress:latest ports: - "8081:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: 0MlbIYOLn2VB1JEeLlvE depends_on: - db volumes: db_data:

访问:

http://localhost:8081

真正实现3 分钟上线一个博客系统


实战场景 3:部署带后端的前后端项目

目录结构:

project/ frontend/ backend/ compose.yml

compose.yml:

version: "3.9" services: frontend: build: ./frontend ports: - "3000:3000" depends_on: - backend backend: build: ./backend environment: DB_HOST: mysql ports: - "8000:8000" mysql: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: root volumes: - db:/var/lib/mysql volumes: db:

开发者只需要命令:

docker compose up -d --build

即可快速进入开发。


Docker Compose 最佳实践

使用.env管理敏感变量

在同级目录创建.env

MYSQL_PASSWORD=123456

compose.yml 使用:

environment: MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}

使用profiles管理不同环境

services: redis: image: redis profiles: ["dev"]

开发启动:

docker compose --profile dev up -d

使用healthcheck提升稳定性

healthcheck: test: ["CMD", "curl", "-f", "http://localhost:80"] interval: 30s retries: 3

写在最后

早期使用的docker-compose命令,需要单独安装,在 2020 年之后官方逐步停止更新,并建议迁移到新版。新的命令不需要单独安装,只要安装Docker Desktop或新版本Docker即可,命令格式得到统一。

命令

来源

是否推荐

备注

docker-compose

旧版,独立 Python 程序

❌ 不推荐(旧)

二进制文件或 Python 脚本

docker compose

新版,集成在 Docker CLI

✅ 推荐(新)

不需要单独安装 compose

Docker Compose = 开发与部署的生产力加速器,通过一个 compose.yml 文件即可:

  • 定义整个应用环境

  • 保证环境一致性

  • 一键启动/停止多容器服务

  • 快速迁移与重建

  • 简化团队协作

无论你是做开发、运维、DevOps 或自建服务,Compose 都是一项必须掌握的技能。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询