侧边栏壁纸
博主头像
CloudServerBox 博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 31 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker Compose 模板文件(docker-compose.yml)全指令详解

CloudServerBox
2026-01-27 / 0 评论 / 0 点赞 / 13 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-27,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1️⃣ 简介 💡

Docker Compose 是 Docker 官方推出的编排(Orchestration)工具,可以让你 📦 用一个命令启动一整套多容器应用

🔹 定位:「定义并运行多个 Docker 容器的应用」 🔹 背景

  • 单个容器可以用 Dockerfile 定义并运行 ✅

  • 但很多系统需要多个容器协作(🌐 Web + 🗄 数据库 + ⚡ 缓存 + 📊 负载均衡)

  • Compose 用一个 YAML 文件 定义并管理这些关系


2️⃣ 核心概念 🧩

  • 服务 (Service) 🛠️:项目的某一个功能模块容器,可以是多个实例,例如 webdb

  • 项目 (Project) 📦:一组关联服务构成的完整业务应用。

关系结构:

项目 (Project)
 ├─ web (Service) 💻
 ├─ db (Service) 🗄
 └─ redis (Service) ⚡

3️⃣ Compose V2 🔄

🐹 最新版本 Compose V2 用 Go 语言重写,并直接作为 Docker CLI 子命令:

docker compose up

📌 区别

  • 🚀 更快、更稳定

  • 🖥️ Docker Desktop(Mac/Windows)内置

  • 🐧 Linux 用户需手动安装


4️⃣ 安装方法 ⚙️

支持平台:

  • 🐧 Linux

  • 🍎 macOS

  • 💻 Windows 10

📦 Pip 安装(ARM 架构,例如树莓派)

sudo pip install -U docker-compose

💽 二进制包安装(Linux x86_64 推荐)

sudo curl -L \
https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) \
> /usr/local/bin/docker-compose
​
sudo chmod +x /usr/local/bin/docker-compose

🇨🇳 国内加速

sudo curl -L \
https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) \
> /usr/local/bin/docker-compose

🐚 Bash 自动补全

curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/bash/docker-compose \
> /etc/bash_completion.d/docker-compose

5️⃣ 卸载 🗑

  • 二进制安装删除:

sudo rm /usr/local/bin/docker-compose
  • Pip 安装删除:

sudo pip uninstall docker-compose

6️⃣ 快速示例 🚀

我们用 Flask + Redis 创建一个简单的 🌐 记录页面访问次数的 Web 应用。

📂 项目结构

myapp/
 ├── app.py 🐍
 ├── Dockerfile 🐳
 └── docker-compose.yml 📜

📝 app.py

from flask import Flask
from redis import Redis
​
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
​
@app.route('/')
def hello():
    count = redis.incr('hits')
    return f'Hello World! 页面已访问 {count} 次。\n'
​
if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

🐳 Dockerfile

FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]

📜 docker-compose.yml

version: '3'
services:
​
  web:
    build: .
    ports:
     - "5000:5000"
​
  redis:
    image: "redis:alpine"

▶️ 启动

docker-compose up

访问 http://localhost:5000 ➡ 每刷新一次,📈 计数加 1。


7️⃣ docker-compose.yml 结构 🧾

version: '3'
services:
  service_name:
    build: .
    image: redis:alpine
    environment:
      - VAR=value
    ports:
      - "5000:5000"
    volumes:
      - ./data:/var/lib/mysql
    networks:
      - backend
networks:
  backend:

📌 关键字段:

  • services 🛠️:定义服务及容器属性

  • volumes 💾:数据持久化

  • ports 🔌:端口映射

  • environment 🌿:环境变量

  • networks 🌐:内部网络


8️⃣ 常用命令速查 🛠

命令

用途

build 🛠️

构建镜像

up 🚀

启动全部服务

down 🛑

停止并删除

logs 📜

查看日志

ps 📋

查看容器状态

exec 🚪

进入容器

restart 🔄

重启服务

pull ⬇️

拉取镜像

scale 📈

扩容


9️⃣ 高级选项 🔧

  • -d 👉 后台运行 🖥️

  • --no-deps 👉 不启动依赖容器 ⛔

  • --build 👉 重新构建镜像 🔄

  • --force-recreate 👉 强制重建 🆕

  • --no-recreate 👉 跳过已存在容器 🚫


🔟 常见场景 🎯

  • 🖥️ Web 开发

  • 🗄 临时数据库环境

  • 🌐 微服务调试


1️⃣1️⃣ 扩容与多环境 📦

  • 扩容:

docker-compose scale web=3 db=2
  • 多环境:

docker-compose -f docker-compose.yml -f prod.yml up -d

1️⃣2️⃣ 调试技巧 🧪

  • 前台运行:

docker-compose up
  • 单服务调试:

docker-compose up --no-deps -d web
  • 查看进程:

docker-compose top

1️⃣3️⃣ 总结 📌

Docker Compose 是 多容器管理的神器 💎:

  • 一个文件 📜 定义完整应用结构

  • 一条命令 🚀 启动全部服务

  • 支持扩容、调试、跨平台 🌐


0

评论区