欢迎光临护送网
详情描述

Docker Compose 是管理多容器 Docker 应用的标准工具。以下是主要使用方法:

一、基本命令

1. 启动服务

# 启动所有服务(在后台运行)
docker-compose up -d

# 启动指定服务
docker-compose up -d service_name

2. 停止服务

# 停止所有服务
docker-compose down

# 停止并删除卷(数据)
docker-compose down -v

3. 查看服务状态

# 查看运行中的服务
docker-compose ps

# 查看所有服务(包括停止的)
docker-compose ps -a

# 查看服务日志
docker-compose logs
docker-compose logs -f  # 实时查看
docker-compose logs service_name  # 查看特定服务

4. 管理服务生命周期

# 启动已停止的服务
docker-compose start

# 停止服务(不删除容器)
docker-compose stop

# 重启服务
docker-compose restart

# 暂停服务
docker-compose pause

# 恢复服务
docker-compose unpause

二、配置管理

1. 基础 docker-compose.yml

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      - NGINX_PORT=80
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

2. 环境变量管理

# 使用 .env 文件
# .env 文件内容:
DB_PASSWORD=mysecret

# docker-compose.yml 中引用:
db:
  image: postgres
  environment:
    POSTGRES_PASSWORD: ${DB_PASSWORD}

三、进阶使用

1. 构建和部署

# 构建镜像(如果使用 build)
docker-compose build

# 重新构建(强制)
docker-compose build --no-cache

# 拉取最新镜像
docker-compose pull

# 执行命令
docker-compose exec service_name command
# 示例:进入容器
docker-compose exec web bash

2. 配置文件管理

# 使用多个配置文件
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

# 指定项目名称(避免命名冲突)
docker-compose -p myproject up -d

3. 查看配置

# 验证配置文件语法
docker-compose config

# 查看服务端口映射
docker-compose port web 80

四、常用场景示例

1. Web 应用栈(Nginx + PHP + MySQL)

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/var/www/html
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - php

  php:
    build: ./php
    volumes:
      - ./html:/var/www/html

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: appdb
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  mysql_data:

2. 开发环境热重载

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app  # 代码挂载,实现热重载
    environment:
      - NODE_ENV=development
    command: npm run dev

五、最佳实践

版本控制:将 docker-compose.yml 和 Dockerfile 加入版本控制 环境分离:使用不同的 compose 文件用于开发/测试/生产 数据持久化:使用命名卷(named volumes)管理数据 网络隔离:创建自定义网络增强安全性 资源限制:设置 CPU 和内存限制 健康检查:配置健康检查确保服务可用性

六、调试技巧

# 查看服务依赖图
docker-compose config --services

# 查看服务配置
docker-compose config --services | xargs -I {} sh -c 'echo "=== {} ===" && docker-compose config --services={}'

# 执行一次性命令(不启动服务)
docker-compose run --rm service_name command

# 清理无用资源
docker-compose down --rmi all  # 删除镜像
docker-compose down --remove-orphans  # 删除孤立的容器

七、Docker Compose v2 与 v1

从 Docker Desktop 开始,Compose 已集成到 Docker CLI 中:

# v1(传统)
docker-compose up

# v2(新版本)
docker compose up  # 注意没有短横线

选择哪个版本取决于你的 Docker 安装方式,两者命令功能基本相同。

相关帖子
青岛市做网站公司@商城网站制作设计,专业开发团队
青岛市做网站公司@商城网站制作设计,专业开发团队
2026年社保缴费如果出现中断,之前缴纳的年限会作废清零吗?
2026年社保缴费如果出现中断,之前缴纳的年限会作废清零吗?
青岛市做网站公司#网站开发设计,多年建站经验
青岛市做网站公司#网站开发设计,多年建站经验
婚后在房产证上添加了名字,是否拥有对该房产的居住权和处置权?
婚后在房产证上添加了名字,是否拥有对该房产的居住权和处置权?
车位编号、测绘面积和合同面积对不上常见吗,普通业主能用什么办法初步核对?
车位编号、测绘面积和合同面积对不上常见吗,普通业主能用什么办法初步核对?
转业费与退役金、安置补助金有什么区别和联系?
转业费与退役金、安置补助金有什么区别和联系?
业主委员会在处理此类DNA检测费用纠纷时,可以发挥怎样的协调作用?
业主委员会在处理此类DNA检测费用纠纷时,可以发挥怎样的协调作用?
影响抵押额度的六大核心要素:房龄、地段、产权性质、借款人收入、负债、征信
影响抵押额度的六大核心要素:房龄、地段、产权性质、借款人收入、负债、征信
威海市AI数字人直播带货@专业网站建设设计,模板建站
威海市AI数字人直播带货@专业网站建设设计,模板建站
典当行贷款利率国有机构是什么?国有机构利率标准解析
典当行贷款利率国有机构是什么?国有机构利率标准解析
玉树救护车跑长途-长途急救车出租,按公里收费
玉树救护车跑长途-长途急救车出租,按公里收费
如何理解公积金年度结息对个人住房资金长期积累的实际作用?
如何理解公积金年度结息对个人住房资金长期积累的实际作用?
威海市精准获客渠道#多语言网站制作,优秀设计团队
威海市精准获客渠道#多语言网站制作,优秀设计团队
张掖市长途120救护车出租价格-医疗转运车出租,车内设备齐全
张掖市长途120救护车出租价格-医疗转运车出租,车内设备齐全
没有流水能办大货车贷款吗?银行流水不够怎么办
没有流水能办大货车贷款吗?银行流水不够怎么办
果洛救护车接送病人-医疗转运车出租护送病人回家
果洛救护车接送病人-医疗转运车出租护送病人回家
武威市120救护车长途转运病人-重症病人转院租救护车
武威市120救护车长途转运病人-重症病人转院租救护车
南宁市软件开发@java开源cms二次开发,收费透明
南宁市软件开发@java开源cms二次开发,收费透明
九江市定制化网站开发#网站开发建设,多年专业建站经验
九江市定制化网站开发#网站开发建设,多年专业建站经验
铜仁市小视频营销推广@企业网站开发建设,优秀设计团队
铜仁市小视频营销推广@企业网站开发建设,优秀设计团队
海南120救护车长途跨省转运病人-长途医疗转运车出租,全国各地都有车
海南120救护车长途跨省转运病人-长途医疗转运车出租,全国各地都有车