9、Docker Compose 实战

发布于:2025-07-29 ⋅ 阅读:(18) ⋅ 点赞:(0)

🐳 Docker Compose 实战教程(含完整 Nginx 案例 + 配置项详解)

适合读者:开发者、后端工程师、运维工程师、初学者
环境要求:CentOS 9 + Docker 已安装
教程亮点:实战驱动、配置项详解、挂载说明、可直接复制使用
标签:#Docker #DockerCompose #运维实战 #Nginx部署


🧩 一、什么是 Docker Compose?

Docker Compose 是 Docker 官方推出的 多容器应用编排工具,允许你使用一份 docker-compose.yml 文件,定义多个服务、网络、卷,并通过一条命令统一启动和管理整个应用栈。


📦 二、安装准备(CentOS 9 已默认集成)

在 CentOS 9 中,安装 Docker 后 Compose 插件默认集成为 docker compose(注意是空格,不是旧版本的 docker-compose):

docker compose version

输出示例:

Docker Compose version v2.38.2

在这里插入图片描述

无需额外安装 Python 版本!


📁 三、Compose 核心语法结构说明

以下是 Compose 文件结构的总览:

version: "3.9"     # 指定 Compose 文件语法版本(推荐使用 3.9)

services:          # 定义所有容器服务
  服务名:
    image:         # 使用的镜像
    build:         # 从 Dockerfile 构建
    container_name: 指定容器名
    ports:         # 端口映射(宿主:容器)
    volumes:       # 数据卷挂载
    environment:   # 环境变量
    depends_on:    # 启动顺序依赖
    networks:      # 加入的网络名

volumes:           # 定义数据卷(可选)

networks:          # 定义网络(可选)

🎯 四、Nginx 实战案例(含挂载配置)

下面通过一个最常见的场景 —— 使用 Nginx 搭建一个静态站点服务,来全面演示 Compose 实战。

4.1 项目目录结构如下:

nginx-compose-demo/
├── docker-compose.yml
└── html/
    └── index.html

4.2 准备静态网页内容

html/index.html 示例:

<!DOCTYPE html>
<html>
<head><title>Docker Compose Nginx</title></head>
<body>
<h1>Hello from Nginx + Docker Compose!</h1>
</body>
</html>

4.3 编写 docker-compose.yml

version: "3.9"

services:
  nginx:
    image: nginx:stable
    container_name: nginx_compose_demo
    ports:
      - "8080:80"                    # 将宿主机 8080 映射到容器的 80 端口
    volumes:
      - ./html:/usr/share/nginx/html:ro  # 将本地 html 挂载到 nginx 容器目录
    restart: unless-stopped          # 容器异常退出将自动重启

🔎 配置说明:

  • image: 使用官方 nginx 稳定版镜像
  • ports: 本地访问为 http://虚拟机ip:8080
  • volumes: 将宿主机目录挂载到容器内静态资源目录(ro 只读)
  • restart: 自动重启策略,推荐使用 unless-stopped

4.4 启动服务

docker compose up -d

成功后访问:

http://<你的服务器IP>:8080

即可看到页面内容。


🛠️ 五、Compose 常用配置项详解汇总

配置项 描述
version Compose 文件版本(建议使用 3.9)
services 定义所有服务(容器)
image 指定镜像名称和版本
build 使用 Dockerfile 构建镜像
container_name 容器的自定义名称
ports 端口映射(格式为 宿主:容器)
volumes 卷挂载:支持 bind 挂载、本地卷、命名卷
restart 重启策略(如 noon-failureunless-stoppedalways
environment 环境变量设置(如数据库密码等)
depends_on 设置依赖关系,保证服务启动顺序
networks 自定义网络配置
command 容器启动后执行的命令
healthcheck 健康检查配置
logging 日志配置(驱动、限制等)

📌 六、常见命令速查

命令 功能说明
docker compose up -d 后台启动所有服务
docker compose down 停止并清理所有服务及网络/卷
docker compose ps 查看当前运行的容器
docker compose logs -f 实时查看日志
docker compose exec 服务名 bash 进入容器内部操作
docker compose restart 重启服务

✅ 七、清理与重建

清理所有容器/网络:

docker compose down --volumes

重建所有镜像并启动:

docker compose up --build -d

📚 八、扩展建议(下一步学习)

  • ✅ 搭建 LAMP / LNMP 环境(Apache、MySQL、PHP)
  • ✅ Compose 多服务依赖(如 Node.js + Redis)
  • ✅ 搭配 .env 文件管理配置参数
  • ✅ 配合 traefik 实现自动反向代理和 HTTPS
  • ✅ 与 CI/CD 系统联动(GitHub Actions、Jenkins)

📦 九、结语

Docker Compose 是容器编排的入门利器,掌握其语法与实战场景将显著提升开发效率和部署能力。本文从基础语法到实战案例,再到配置详解,覆盖了市面上 99% 的使用场景,希望对你有帮助!


网站公告

今日签到

点亮在社区的每一天
去签到