Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 虚拟化

    • 系统虚拟化

    • 容器虚拟化

      • docker命令
      • docker安装portainer图形化界面
      • var-run-docker.sock是什么
      • docker-compose.yml配置文件最全选项详解
      • Volume的类型和生命周期
      • docker更换镜像源
      • docker安装prometheus监控
      • docker安装node_exporter
      • docker安装cadvisor
      • micrometer是Exporter吗,有哪些常用的Exporter
      • docker安装gitea
      • docker安装nacos
      • docker安装anki-sync-server
    • 网络虚拟化

    • 存储虚拟化

    • 应用虚拟化

  • Git

  • 可视化

  • Linux

  • 远程串流等

  • SWF

  • 网络

  • 网站收藏
  • 技术
  • 虚拟化
  • 容器虚拟化
plantre
2025-05-08

docker-compose.yml配置文件最全选项详解

以下是针对 docker-compose.yml 配置文件的选项详解,综合多个权威文档整理而成:


一、基础配置结构

  1. version 与 name
    • version:定义 Compose 文件格式版本(如 '3.8'),不同版本支持的功能不同。

    • name(新版替代 version):指定项目名称,用于区分多环境部署。

    name: my_project
    
    1
  2. services
    定义所有服务容器,每个服务对应一个应用组件(如 Web 服务、数据库):

    services:
      web:
        image: nginx:latest
      db:
        build: .
    
    1
    2
    3
    4
    5

二、服务定义核心选项

  1. 镜像与构建
    • image:直接使用现有镜像(支持远程仓库或本地镜像)。

    • build:基于 Dockerfile 构建镜像,支持自定义上下文路径和参数:

    build:
      context: ./app
      dockerfile: Dockerfile-prod
      args:
        NODE_ENV: production
    
    1
    2
    3
    4
    5
  2. 端口与网络
    • ports:映射宿主机与容器端口(支持范围映射和协议指定):

    ports:
      - "8080:80"                 # 短格式
      - target: 3306              # 长格式(v3.2+)
        published: 13306
        protocol: tcp
        mode: host
    
    1
    2
    3
    4
    5
    6

    • networks:指定容器加入的自定义网络,支持多网络隔离:

    networks:
      - frontend
    
    1
    2
  3. 数据卷与持久化
    • volumes:支持绑定挂载、命名卷和临时卷:

    volumes:
      - /opt/data:/var/lib/mysql   # 宿主机目录绑定
      - db_data:/var/lib/mysql     # 命名卷(需在顶级volumes定义)
      - type: tmpfs                # 临时内存卷
        target: /cache
    
    1
    2
    3
    4
    5
  4. 环境变量与命令
    • environment:设置容器内环境变量:

    environment:
      MYSQL_ROOT_PASSWORD: "secret"
      - DEBUG=true                 # 数组语法
    
    1
    2
    3

    • command:覆盖容器默认启动命令:

    command: ["python", "app.py"]
    
    1
  5. 容器元数据
    • container_name:自定义容器名称(需唯一)。

    • restart:定义容器重启策略(如 always、on-failure)。


三、高级配置选项

  1. 依赖与健康检查
    • depends_on:定义服务启动顺序,支持健康状态条件:

    depends_on:
      db:
        condition: service_healthy
    
    1
    2
    3

    • healthcheck:自定义健康检测逻辑:

    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
    
    1
    2
    3
    4
  2. 资源限制
    • deploy.resources(仅 Swarm 模式):限制 CPU/内存:

    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
    
    1
    2
    3
    4
    5
  3. 日志与调试
    • logging:配置日志驱动和滚动策略:

    logging:
      driver: json-file
      options:
        max-size: "200k"
        max-file: "10"
    
    1
    2
    3
    4
    5

四、扩展功能

  1. 多环境配置
    • 通过 -f 指定不同 Compose 文件(如 docker-compose.prod.yml)。

    • 使用环境变量文件(.env)动态注入配置。

  2. 复用配置模板
    • 通过 x- 前缀定义可复用配置块:

    x-logging: &default-logging
      driver: json-file
      options: { max-size: "200k", max-file: "10" }
    services:
      web:
        logging: *default-logging
    
    1
    2
    3
    4
    5
    6

五、实用命令参考

  1. 启动与停止
    • docker-compose up -d:后台启动服务。

    • docker-compose down --volumes:清理容器、网络及数据卷。

  2. 调试与监控
    • docker-compose logs -f web:实时查看服务日志。

    • docker-compose ps:查看容器状态。


以上内容综合了 Docker 官方文档及多个实践案例,覆盖了 90% 以上的常用配置场景。更详细的选项可参考 Docker Compose 官方文档 (opens new window)。

编辑 (opens new window)
上次更新: 2025/06/10, 09:18:05
var-run-docker.sock是什么
Volume的类型和生命周期

← var-run-docker.sock是什么 Volume的类型和生命周期→

最近更新
01
集成loki
07-04
02
TCP的ESTABLISHED是什么意思
06-24
03
安装1panel
06-24
更多文章>
Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式