当前位置: 首页 > news >正文

了解docker-compose.yml

docekr-compose.yml的介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,通过 YAML 文件配置应用程序的服务。

  1. docker-compose.yml的基本结构,主要包含以下主要部分:

version: '3.8' : 指定使用的 compose 文件版本
services:定义各个服务
networks:定义网络
volumes:定义卷

  1. 在.yml文件中定义各个服务
  • 使用现有镜像
services:web: # 第一个服务的名称image: nginx:latest # 服务使用的镜像ports:  # 容器和主机的端口映射- "80:80"
  • 构建自定义镜像
services:app: # 服务1的名称build: 			  # 构建镜像context: .      # Dockerfile 所在目录dockerfile: Dockerfile.dev  # 自定义 Dockerfile 文件名。默认使用 context 目录下的 Dockerfileargs:           # 构建时变量(对应 Dockerfile 中的 ARG)。需先在 Dockerfile 中声明APP_VERSION: 1.0ENV: "production"target: builder # 多阶段构建的目标阶段,指定构建到某个阶段停止cache_from:     # 缓存来源,从指定镜像中复用缓存层加速构建- myapp:latestlabels:         # 为镜像添加元数据com.example.description: "My custom app"network: host  # 构建时的网络模式,默认为defaultimage: app:1.0  # 构建后生成的镜像名称ports:- "5000:5000"
  1. .yml文件中的网络配置
networks:app_network:driver: bridgeipam:config:- subnet: 172.20.0.0/16
  1. .yml中的卷配置
volumes:db_data:driver: localapp_data:external: true
  1. 完整示例
    Python Web 应用 + Redis
version: '3.8'services:web:build:context: .dockerfile: Dockerfileports:- "5000:5000"environment:- REDIS_HOST=redis- REDIS_PORT=6379env_file:- .envdepends_on:redis:condition: service_healthyrestart: unless-stoppednetworks:- backenddeploy:resources:limits:cpus: '0.5'memory: 512Mredis:image: redis:7.0-alpineenv_file:- .envcommand: redis-server --requirepass $$REDIS_PASSWORDhealthcheck:test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "$$REDIS_PASSWORD", "ping"]interval: 10stimeout: 5sretries: 5volumes:- redis_data:/datarestart: unless-stoppednetworks:- backenddeploy:resources:limits:cpus: '0.3'memory: 256Mvolumes:redis_data:networks:backend:driver: bridge
  1. 高级配置
  • 健康检查
services:web:image: nginxhealthcheck:test: ["CMD", "curl", "-f", "http://localhost"]interval: 1m30stimeout: 10sretries: 3
  • 资源限制
services:app:image: app-imagedeploy:resources:limits:cpus: '0.50'memory: 512M
  • 多容器扩展
services:worker:image: worker-imagedeploy:replicas: 3
  1. 配置过程中需要注意的事项
  • 版本控制:始终指定 compose 文件版本
  • 环境变量:敏感信息使用环境变量或 secrets
  • 服务分离:每个容器只运行一个主要进程
  • 网络隔离:为不同应用使用不同网络
  • 卷持久化:重要数据使用命名卷
  • 日志配置:合理配置日志驱动和选项
  1. docker-compose的常用命令
# 启动服务
docker-compose up -d# 停止服务
docker-compose down# 查看运行状态
docker-compose ps# 查看日志
docker-compose logs -f# 构建服务
docker-compose build# 执行命令
docker-compose exec service_name command

总结:通过合理编写 docker-compose.yml 文件,您可以轻松定义和管理复杂的多容器应用程序。

http://www.xdnf.cn/news/406711.html

相关文章:

  • mac一键安装gpt-sovit教程中,homebrew卡住不动的问题
  • latex控制表格宽度,不要超出页面
  • windows系统使用phpstudy安装ssl证书
  • 机器学习驱动的智能化电池管理技术与应用
  • 腾讯怎样基于DeepSeek搭建企业应用?怎样私有化部署满血版DS?直播:腾讯云X DeepSeek!
  • 解决 CJSON 浮点数精度问题:从 `cJSON_AddNumberToObject` 到 `cJSON_AddRawToObject`
  • IoTDB 分段查询语句深度剖析:GROUP BY 与时序语义的完美结合
  • 2024年北理工Python123第六章编程题整理
  • 【愚公系列】《Manus极简入门》034-跨文化交流顾问:“文化桥梁使者”
  • TCPIP详解 卷1协议 七 防火墙和网络地址转换
  • vLLM部署多模态大模型Qwen2.5-VL-3B-Instruct
  • 基于React的高德地图api教程002:自定义地图样式
  • AI边缘网关_5G/4G边缘计算网关厂家_计讯物联
  • 面试题 - Kafka、RabbitMQ、RocketMQ如何选型?
  • LInux系统文件与目录管理(二)
  • 如何选择合适的服务器操作系统
  • 学习日志04 java
  • MyBatis-Plus使用 wrapper.apply() 添加自定义 SQL 片段
  • 马铃薯土豆幼苗与杂草检测数据集VOC+YOLO格式3051张2类别
  • winreg查询Windows注册表的一些基本用法
  • python标准库--heapq - 堆队列算法(优先队列)在算法比赛的应用
  • 算法题(145):货仓选址
  • 服务器多JAR程序运行与管理指南
  • ZeRO与3D并行之间的关系
  • 可灵 AI:开启 AI 视频创作新时代
  • GBK与UTF-8编码问题(1)
  • DeepSeek-R1-Distill-Qwen-1.5B代表什么含义?
  • 集成学习——Bagging,Boosting
  • 一个极简单的 VUE3 + Element-Plus 查询表单展开收起功能组件
  • android studio开发aar插件,并用uniapp开发APP使用这个aar