欢迎光临护送网
详情描述

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.ymlDockerfile 加入版本控制 环境分离:使用不同的 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年失业人员在领取失业金的同时,可以从事哪些灵活工作?
企业到期贷款续贷过桥,梳理续贷审批与垫资资金衔接要点
企业到期贷款续贷过桥,梳理续贷审批与垫资资金衔接要点
淄博市精准获客软件#独立网站制作,优秀设计团队
淄博市精准获客软件#独立网站制作,优秀设计团队
过桥垫资合同文字陷阱解析,逐条研读条款规避不平等约定内容
过桥垫资合同文字陷阱解析,逐条研读条款规避不平等约定内容
双方均为中国公民但长期在海外生活,能否回国办理婚姻登记手续?
双方均为中国公民但长期在海外生活,能否回国办理婚姻登记手续?
宠物伤人后,双方就“先行赔付”金额无法达成一致,应该怎么处理?
宠物伤人后,双方就“先行赔付”金额无法达成一致,应该怎么处理?
未来“Wi-Fi 7”的普及会对公共免费网络的安全性带来哪些提升或挑战?
未来“Wi-Fi 7”的普及会对公共免费网络的安全性带来哪些提升或挑战?
如何申请到低利率的房屋抵押贷款?掌握这几个技巧能帮你省钱
如何申请到低利率的房屋抵押贷款?掌握这几个技巧能帮你省钱
家里的重要证件和珍贵资料,如何进行防灾备份与安全存储?
家里的重要证件和珍贵资料,如何进行防灾备份与安全存储?
发现新用户套餐更便宜,老用户申请办理同款降级却总被以“不符条件”拒绝?
发现新用户套餐更便宜,老用户申请办理同款降级却总被以“不符条件”拒绝?
玉溪市跨省长途救护车出租-医疗转运车出租,全国各地都有车
玉溪市跨省长途救护车出租-医疗转运车出租,全国各地都有车
邵阳市SEO网络推广@网站运营,专业建站
邵阳市SEO网络推广@网站运营,专业建站
经济适用房如何办理抵押?房子抵押贷款特殊流程与限制
经济适用房如何办理抵押?房子抵押贷款特殊流程与限制
开采一吨金矿,平均能提炼出多少克的黄金?
开采一吨金矿,平均能提炼出多少克的黄金?
温州市安卓系统app开发#网站优化推广,专业建站
温州市安卓系统app开发#网站优化推广,专业建站