尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
docker-compose.yml
一、docker-compose.ymldocker-compose.yml本质上是把多个docker run命令翻译成 YAML 格式。它描述了有哪些服务容器每个服务用什么镜像端口怎么映射数据怎么持久化服务之间怎么依赖二、文件的基本结构version: 3.8 # Compose 文件版本 services: # 定义所有服务必填 service_name: # 服务名自己起 image: ... # 镜像 ports: ... # 端口映射 environment: ... # 环境变量 volumes: ... # 数据卷 depends_on: ... # 依赖关系 volumes: # 声明数据卷可选 networks: # 声明网络可选三、怎么写从 docker run 翻译过来1. 先写一个 docker rundocker run -d \ --name mysql_db \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD123456 \ -e MYSQL_DATABASEmydb \ -v mysql_data:/var/lib/mysql \ --restart always \ mysql:8.02. 翻译成 docker-compose.ymlversion: 3.8 services: mysql: image: mysql:8.0 container_name: mysql_db ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: mydb volumes: - mysql_data:/var/lib/mysql restart: always volumes: mysql_data:3. 参数对应关系docker run 参数docker-compose.yml 字段--name mysql_dbcontainer_name: mysql_db-p 3306:3306ports: - 3306:3306-e KEYVALUEenvironment: KEY: VALUE-v mysql_data:/var/lib/mysqlvolumes: - mysql_data:/var/lib/mysql--restart alwaysrestart: alwaysmysql:8.0image: mysql:8.0四、多个服务的示例以 Python 应用 MySQL Redis 为例version: 3.8 services: # Python 应用 app: build: . # 从当前目录的 Dockerfile 构建 container_name: python_app ports: - 8080:8080 environment: DB_HOST: mysql # 用服务名访问不是 localhost DB_PORT: 3306 DB_USER: app_user DB_PASSWORD: app_pass REDIS_HOST: redis volumes: - ./app:/app # 挂载代码开发用 depends_on: - mysql - redis restart: always # MySQL 数据库 mysql: image: mysql:8.0 container_name: mysql_db ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: mydb MYSQL_USER: app_user MYSQL_PASSWORD: app_pass volumes: - mysql_data:/var/lib/mysql restart: always # Redis 缓存 redis: image: redis:7.0-alpine container_name: redis_cache ports: - 6379:6379 volumes: - redis_data:/data restart: always volumes: mysql_data: redis_data:五、常用字段1. image vs build# 用现成的镜像 image: mysql:8.0 # 从 Dockerfile 构建 build: context: . # 构建上下文 dockerfile: Dockerfile # Dockerfile 路径2. ports端口映射ports: - 8080:8080 # 主机:容器 - 443:443 - 127.0.0.1:3306:3306 # 只绑定本地3. environment环境变量# 方式一键值对 environment: DB_HOST: mysql DB_PORT: 3306 # 方式二列表 environment: - DB_HOSTmysql - DB_PORT3306 # 方式三从 .env 文件读取 env_file: - .env4. volumes数据卷volumes: # 命名卷Docker 管理 - mysql_data:/var/lib/mysql # 绑定挂载主机路径 - ./app:/app # 只读挂载 - ./config:/app/config:ro5. depends_on依赖关系depends_on: - mysql - redis注意depends_on只保证启动顺序不保证服务就绪。如果需要等待服务就绪要用healthcheckservices: app: depends_on: mysql: condition: service_healthy mysql: healthcheck: test: [CMD, mysqladmin, ping, -h, localhost] interval: 10s timeout: 5s retries: 56. restart重启策略值说明no不自动重启默认always总是重启on-failure失败时重启unless-stopped除非手动停止否则重启7. command覆盖启动命令command: python app.py # 或 command: [python, app.py]8. networks自定义网络services: app: networks: - app_network networks: app_network: driver: bridge六、用 .env 文件管理敏感信息不要在 docker-compose.yml 里写密码用.env文件# .env MYSQL_ROOT_PASSWORD123456 MYSQL_DATABASEmydb DB_USERapp_user DB_PASSWORDapp_pass# docker-compose.yml services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE}备注Compose 会自动读取同目录下的.env文件。七、写 docker-compose.yml 的套路步骤列出所有服务应用、数据库、缓存、消息队列等确定每个服务的镜像从 Docker Hub 查官方镜像名配置端口需要外部访问的才映射配置环境变量查官方文档看哪些是必填的配置数据卷有状态的服务数据库必须挂载配置依赖depends_on控制启动顺序配置重启策略生产环境用always声明 volumes 和 networks在文件末尾统一声明docker-compose.yml 就是把多个docker run命令翻译成 YAML 格式。先写docker run再逐条翻译成 YAML 字段最后用docker-compose up -d一键启动。
RELATED

相关推荐

(论文速读)LLSA:把 DiT 稀疏注意力从二次复杂度降到对数线性

(论文速读)LLSA:把 DiT 稀疏注意力从二次复杂度降到对数线性

论文题目: Trainable Log-linear Sparse Attention for Efficient Diffusion Transformers(用于高效扩散 Transformer 的可训练对数线性稀疏注意力) 会议: CVPR 2026(Highlight) 摘要: 扩散 Tr…

📅 2026/10/5 6:58:52
C++初阶(长期更新)第6讲:类和对象(下)

C++初阶(长期更新)第6讲:类和对象(下)

C初阶(长期更新)第6讲: 类和对象(下) 跟着潼心走,轻松拿捏C,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。博主主页:潼心141…

📅 2026/10/5 6:58:52
020-0802-机器学习-特征工程、模型评估

020-0802-机器学习-特征工程、模型评估

机器学习概述 机器学习(Machine Learning, ML)主要研究计算机系统对于特定任务的性能,逐步进行改善的算法和统计模型。通过输入海量训练数据对模型进行训练,使模型掌握数据所蕴含的潜在规律,进而对新输入的数据进行准确的分类或预测。 机器学习是一门多领域交叉学科,涉…

📅 2026/10/5 6:58:52
MORE NEWS

更多资讯

📰

模拟CMOS设计必备:MOS器件物理核心概念与工程应用解析

做模拟IC设计,大部分人开局都是抱着拉扎维那本《模拟CMOS集成电路设计》在啃,第一章还能靠兴趣撑住,到了第二章MOS器件物理基础,很多人直接开始怀疑人生。我当年也是这样,捧着书看了三遍,感觉每个字都认识&…

📰

Agent生产环境落地指南:记忆、编排、安全与并发实践

1. 这份调研报告到底在聊什么 Agent 这个词在 2025 年到 2026 年之间,从技术圈的黑话变成了产品经理、运维、甚至业务侧都在追问的东西。我拿到《2026 Agent 开发者调研报告丨Alibaba Cloud AI Agent Handbook》这份材料的时候,第一反应不是去看它列了多…

📰

AI Agent 生产实战:编排、记忆、安全与多 Agent 协作的工程化指南

1. 从一份调研报告说起:Agent 开发者到底在关心什么2026 年的 Agent 开发领域,和两年前已经完全不是一个面貌了。2024 年大家还在争论"Agent 到底是不是套壳的 Prompt 工程",到了 2026 年,这个问题已经没人再提——因为…

📰

大华客流统计方案深度解析:系统架构、安装参数与避坑指南

简介:浙江大华技术股份有限公司编写的《大华客流统计分析解决方案》,面向商场、连锁店等商业场所的运营管理与智能化项目人员,针对人工客流统计效率低、数据滞后等问题,给出了基于视频智能分析的完整应对思路。包内为单个doc文档&…

📰

电商订单数据清洗实战——Pandas 处理缺失值、重复单与异常金额

AI Agent Function Calling Python 个人主页&#xff1a;> for_ever_love__ < &#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 我想学python了 < 其他栏目: > iOS项目总结大全 < 其他栏目: > iOS UI < 文章目录电商订单数据清…

📰

乳腺癌病理图像自动分类:从patch到WSI的深度学习落地指南

简介&#xff1a;PDF资料《基于深度学习的乳腺癌病理图像自动分类》定位清晰&#xff0c;面向医学影像处理、计算机辅助诊断与深度学习应用方向的科研人员、临床工程师和学生。乳腺癌是威胁女性健康的常见恶性肿瘤&#xff0c;病理图像是临床确诊和制定治疗方案的重要依据&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬