docker compose入门3—docker compose yaml字段详解

ops/2024/12/22 18:41:22/

这是一个整合了几乎所有主要字段的 Docker Compose 示例文件,包括服务定义、卷、网络、Secrets、配置等所有你可能用到的配置项。这个文件模拟了一个 Web 服务、数据库服务、以及如何使用卷、网络、Secrets 和配置。

综合示例 docker-compose.yml

version: '3.8'  # Docker Compose 文件版本services:web:image: nginx:alpine  # 使用 nginx:alpine 镜像container_name: nginx-container  # 指定容器名称build:  # 构建镜像选项context: ./webdockerfile: Dockerfile.customargs:APP_VERSION: "1.0"ports:- "8080:80"  # 将宿主机的 8080 端口映射到容器的 80 端口environment:  # 环境变量- NGINX_HOST=localhost- NGINX_PORT=80env_file:  # 加载环境变量文件- ./common.env- ./web.envvolumes:  # 挂载卷- ./html:/usr/share/nginx/html  # 挂载本地目录- web-data:/data  # 使用定义的卷networks:  # 网络配置- frontenddepends_on:  # 服务依赖- dblogging:  # 日志配置driver: "json-file"options:max-size: "10m"max-file: "3"healthcheck:  # 健康检查test: ["CMD", "curl", "-f", "http://localhost"]interval: 30stimeout: 10sretries: 3secrets:  # 使用 Secrets- db_passwordconfigs:  # 使用配置- web_configrestart: always  # 容器失败时自动重启extra_hosts:  # 添加额外的主机名解析- "somehost:162.242.195.82"dns:  # 自定义 DNS 服务器- 8.8.8.8dns_search:  # DNS 搜索域- example.comtty: true  # 分配一个伪终端stdin_open: true  # 保持 STDIN 打开db:image: postgres:13  # 使用 postgres:13 镜像container_name: postgres-containerenvironment:  # 数据库相关环境变量POSTGRES_DB: mydatabasePOSTGRES_USER: userPOSTGRES_PASSWORD: passwordvolumes:  # 数据库卷挂载- db-data:/var/lib/postgresql/datanetworks:  # 网络- backendsecrets:  # 使用 Secrets- db_passwordrestart: alwaysvolumes:  # 定义卷web-data:  # Web 服务的数据卷driver: localdb-data:  # 数据库的数据卷driver: localdriver_opts:o: "uid=1000,gid=1000"type: "nfs"networks:  # 定义网络frontend:driver: bridgebackend:driver: bridgeipam:config:- subnet: 172.16.238.0/24gateway: 172.16.238.1secrets:  # 定义 Secretsdb_password:file: ./secrets/db_password.txt  # 从文件加载密码configs:  # 定义配置web_config:file: ./config/nginx.conf  # 加载 Nginx 配置文件

文件结构解析

  1. version:指定 Docker Compose 文件版本。

  2. services:定义了两个服务:

    • web 服务:基于 Nginx,暴露 8080 端口,使用 build 构建镜像,挂载卷、使用环境变量文件、依赖 db 服务,并配置健康检查、日志、Secrets 和配置。
    • db 服务:基于 Postgres,使用环境变量指定数据库配置,挂载卷并使用 Secrets。
  3. volumes:定义了两个卷:

    • web-data:用于 Web 服务的数据存储。
    • db-data:用于数据库的数据持久化,并配置了自定义的驱动选项。
  4. networks:定义了两个网络:

    • frontend:前端网络,使用默认桥接驱动。
    • backend:后端网络,配置了 IP 地址分配和网关。
  5. secrets:定义了数据库的密码,以文件形式存储。

  6. configs:为 Web 服务提供 Nginx 的配置文件。


这个文件展示了 Docker Compose 中几乎所有可能用到的字段,是一个集成了服务构建、网络配置、卷挂载、Secrets、配置、日志、健康检查等功能的完整示例。你可以根据自己的应用需求,灵活修改和定制这些字段。


http://www.ppmy.cn/ops/123145.html

相关文章

基于SpringBoot+Vue+MySQL的中医院问诊系统

系统展示 用户前台界面 管理员后台界面 医生后台界面 系统背景 随着信息技术的迅猛发展和医疗服务需求的不断增加,传统的中医院问诊流程已经无法满足患者和医院的需求。纸质病历不仅占用大量存储空间,而且容易丢失和损坏,同时难以实现信息的快…

YOLOv10改进策略【注意力机制篇】| GAM全局注意力机制: 保留信息以增强通道与空间的相互作用

一、本文介绍 本文记录的是基于GAM注意力模块的YOLOv10目标检测改进方法研究。GAM注意力模块通过3D排列和重新设计的子模块,能够在通道和空间方面保留信息,避免了先前方法中由于信息减少和维度分离而导致的全局空间-通道交互丢失的问题。本文利用GAM改进…

微信重大更新来袭,用户体验全面升级

在经过了两个月的漫长等待之后,微信终于迎来了新版本的更新。 无论是安卓还是iOS用户,都能感受到这次更新带来的全新体验。 微信团队在细节上的精心打磨,无疑让这款国民应用更加贴合用户的需求,从界面的调整到功能的优化&#x…

软件I2C-基于江科大源码进行的原理解析和改造升级

一、软件I2C的作用 软件I2C可以不用特定的端口,可以在I2C外设不够的时候使用,虽然没有硬件I2C的速度快,但是在一些要求低的工作中不足为谈 数据有效性: I2C总线进行数据传送时,时钟信号为高电平期间,数据…

第二章:处理机管理:第二节——处理机调度

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

HarmonyOS应用六之应用程序进阶二

目录: 一、进度条通知二、闹钟提醒2.1、在module.json5配置文件中开启权限2.2、导入后台代理提醒reminderAgentManager模块,将此模块命名为reminderAgentManager2.3、如果是新增提醒,实现步骤如下: 3、Native C交互4、第三方库的基…

序列化与反序列化基础及反序列化漏洞(附案例)

参考文章: [web安全原理]PHP反序列化漏洞 - 笑花大王 - 博客园 (cnblogs.com) 一、概念 为了能有效的存储数据而不丢失数据的类型和内容,经常需要通过序列化对数据进行处理,将数据进行序列化后,会生成一个字符串,字符…

王春城 | 如何处理班组管理中出现的人际冲突?

在日常工作中,由于性格差异、工作压力、沟通不畅等多种原因,班组管理中难免会出现人际冲突。这些冲突若不能得到妥善处理,不仅会影响团队的凝聚力,还可能阻碍工作进度,降低整体绩效。因此,掌握有效的策略来…