当前位置:   article > 正文

(二)docker-compose使用——2 version3版本的yaml文件全部配置项_查看compose 版本 3.7是什么

查看compose 版本 3.7是什么

参考上一篇博客 版本对应。https://blog.csdn.net/yilvqingtai/article/details/118796925

配置文件配置项总览:

  1. version: "3.9"
  2. services:
  3. my_name: //自定义服务名称
  4. build:
  5. context: . //(1)可以dockerfile所在路径,也可以是git的url (2)相对路径,相对于当前配至文件目录
  6. dockerfile: Dockerfile //默认Dockerfile,此处可以自己指定某路径下的dockerfile文件
  7. args: //自定义参数kv,运行该文件的时候,参数可以被dockeefile文件引用,详见说明
  8. labels: //给镜像打标签,V3.3以上,官方建议格式:反向dns:业务名(如:com.baidu.text:accountapp)
  9. network: //V3.4以上,构建容器时,指派当前的网络环境组,如果none 表示禁用网络
  10. shm_size: 2gb 或者 1000000000 //为此构建的容器设置/dev/shm分区的大小/dev/shm可自行百度
  11. target: prod //V3.4以上,在内部定义构建指定的阶段dockerfile
  12. cap_add:
  13. cap_drop:
  14. cgroup_parent:
  15. command: //覆盖默认命令,和dockerfile指令相似.
  16. configs:
  17. container_name: //指定自定义容器的名称;Docker容器名称必须是唯一的,如果指定了自定义名称,则无法将服务扩展到多个容器.
  18. credential_spec: //v3.3
  19. depends_on: //服务依赖关系
  20. deploy: //指定与部署和运行服务相关的配置
  21. endpoint_mode: //为连接到群集的外部客户端指定服务发现方法
  22. labels: //指定服务的标签。这些标签仅在服务上设置,而不在服务的任何容器上设置。
  23. mode: //全局或复制(副本容器)
  24. placement: //指定约束和首选项的位置
  25. max_replicas_per_node:
  26. replicas: //如果复制了服务,请指定在任何给定时间应运行的容器数。
  27. resources: //配置资源限制.
  28. restart_policy: //配置是否以及如何在容器退出时重新启动容器
  29. rollback_config: //配置在更新失败的情况下应如何回滚服务
  30. update_config: //配置服务应如何更新。用于配置滚动更新.
  31. devices:
  32. dns: //自定义dns服务
  33. dns_search: //自定义DNS搜索域
  34. entrypoint: //覆盖默认entrypoint
  35. env_file: //从文件添加环境变量
  36. environment: //添加环境变量。您可以使用数组或字典。任何布尔值; true,false,yes no,需要用引号括起来
  37. expose:
  38. external_links:
  39. extra_hosts:
  40. healthcheck:
  41. image:
  42. init:
  43. isolation:
  44. labels:
  45. links:
  46. logging:
  47. network_mode:
  48. networks:
  49. pid:
  50. ports:
  51. profiles:
  52. restart:
  53. secrets:
  54. security_opt:
  55. stop_grace_period:
  56. stop_signal:
  57. sysctls:
  58. tmpfs:
  59. ulimits:
  60. userns_mode:
  61. volumes:
  62. driver:
  63. driver_opts:
  64. external:
  65. name:

build

  • 在构建时应用的配置选项. 可以指定为包含构建上下文路径的字符串.
  1. version: "3.7" #版本
  2. services: #服务
  3. nginx: #服务名称
  4. build: ./dir #指定构建目录
  5. image: nginx:tag #指定基础镜像

context

  • 包含Dockerfile的目录的路径,或者是git存储库的url。
  • 当提供的值是相对路径时,它被解释为相对于Compose文件的位置。此目录也是发送到Docker守护程序的构建上下文。
  1. build:
  2. context: ./dir

dockerfile

  • Compose使用备用文件来构建。还必须指定构建路径。
  1. build:
  2. context: .
  3. dockerfile: Dockerfile-alternate

ARGS

  • 添加构建参数.在dockerfile中定义:
  1. ARG buildno
  2. ARG gitcommithash
  • 指定参数在build指令下构建
  1. build:
  2. context: .
  3. args:
  4. buildno: 1
注意: 在Dockerfile中,如果在FROM指令之前指定ARG,则在FROM下的构建指令中不能使用ARG。
YAML布尔值(true,false,yes,no,on,off)必须用引号括起来,以便解析器将它们解释为字符串。

CACHE_FROM

  1. build:
  2. context: .
  3. cache_from:
  4. - alpine:latest
  5. - corp/web_app:3.14

LABELS

  • 使用Docker标签将元数据添加到生成的镜像中. 可以使用数组或字典。
  1. build:
  2. context: .
  3. labels:
  4. com.example.description: "Accounting webapp"

SHM_SIZE

  • 为此构建的容器设置/dev/shm分区的大小
  1. build:
  2. context: .
  3. shm_size: '2gb'

TARGET

  1. build:
  2. context: .
  3. target: prod

cap_add和cap_drop

  • 添加或删除容器功能
  1. cap_add:
  2. - ALL
  3. cap_drop:
  4. - NET_ADMIN
  5. - SYS_ADMIN

cgroup_parent

  • 为容器指定可选的父cgroup
cgroup_parent: m-executor-abcd

command

  • 覆盖默认命令,和dockerfile指令相似.
command: ["bundle", "exec", "thin", "-p", "3000"]

configs

  • 短语法变体仅指定配置名称。这将授予容器对配置的访问权限,并将其安装在容器中的/ <config_name>中。源名称和目标安装点都设置为配置名称. 支持3.3版本以上.
  • 以下示例使用短语法授予对my_config和my_other_config配置的redis服务访问权限。 my_config的值设置为./my_config.txt文件的内容,my_other_config被定义为外部资源,这意味着它已经在Docker中定义,通过运行docker config create命令或另一个堆栈部署。如果外部配置不存在,则堆栈部署将失败并显示config not found错误
  1. version: "3.7"
  2. services:
  3. redis:
  4. image: redis:latest
  5. deploy:
  6. replicas: 1
  7. configs:
  8. - my_config
  9. - my_other_config
  10. configs:
  11. my_config:
  12. file: ./my_config.txt
  13. my_other_config:
  14. external: true

LONG SYNTAX

  • source: Docker中存在的配置名称
  • target: 要在服务的任务容器中装入的文件的路径和名称。默认为:/<source>
  • uid和gid: 在服务的任务容器中拥有已装入的配置文件的数字UID或GID.默认为0.
  • mode: 以八进制表示法在服务的任务容器中装入的文件的权限。默认值为0444.配置无法写入,因为它们安装在临时文件系统中,因此如果设置了可写位,则会将其忽略。可以设置可执行位。
  • 以下示例将my_config的名称设置为容器中的redis_config,将模式设置为0440(组可读)并将用户和组设置为103. redis服务无权访问my_other_config配置。
  1. version: "3.7"
  2. services:
  3. redis:
  4. image: redis:latest
  5. deploy:
  6. replicas: 1
  7. configs:
  8. - source: my_config
  9. target: /redis_config
  10. uid: '103'
  11. gid: '103'
  12. mode: 0440
  13. configs:
  14. my_config:
  15. file: ./my_config.txt
  16. my_other_config:
  17. external: true
  • 可以授予对多个配置的服务访问权限.

container_name

  • 指定自定义容器的名称.
container_name: nginx-test
  • Docker容器名称必须是唯一的,如果指定了自定义名称,则无法将服务扩展到多个容器.

EXAMPLE GMSA CONFIGURATION

  • 为服务配置gMSA凭据规范时,只需指定凭据规范.
  1. version: "3.8"
  2. services:
  3. myservice:
  4. image: myimage:latest
  5. credential_spec:
  6. config: my_credential_spec
  7. configs:
  8. my_credentials_spec:
  9. file: ./my-credential-spec.json|

depends_on

  1. 服务依赖关系之间的Express依赖关系会导致以下行为:
  2. docker-compose up: 以依赖顺序启动服务.
  3. docker-compose up SERVICE: 自动包含SERVICE的依赖项.
  4. docker-compose stop: 按依赖顺序停止服务.
  1. version: "3.7"
  2. services:
  3. web:
  4. build: .
  5. depends_on:
  6. - db
  7. - redis
  8. redis:
  9. image: redis
  10. db:
  11. image: postgres

deploy

  • 指定与部署和运行服务相关的配置.
  1. version: "3.7"
  2. services:
  3. redis:
  4. image: redis:alpine
  5. deploy:
  6. replicas: 6
  7. update_config:
  8. parallelism: 2
  9. delay: 10s
  10. restart_policy:
  11. condition: on-failure

ENDPOINT_MODE

  • 为连接到群集的外部客户端指定服务发现方法。
  • endpoint_mode: vip: Docker为服务分配虚拟IP(VIP),作为客户端到达网络服务的前端。 Docker在客户端和服务的可用工作节点之间路由请求,而无需客户端知道有多少节点参与服务或其IP地址或端口。
  • endpoint_mode: dnsrr: DNS循环(DNSRR)服务发现不使用单个虚拟IP。 Docker为服务设置DNS条目,以便服务名称的DNS查询返回IP地址列表,客户端直接连接到其中一个。
  1. version: "3.7"
  2. services:
  3. wordpress:
  4. image: wordpress
  5. ports:
  6. - "8080:80"
  7. networks:
  8. - overlay
  9. deploy:
  10. mode: replicated
  11. replicas: 2
  12. endpoint_mode: vip
  13. mysql:
  14. image: mysql
  15. volumes:
  16. - db-data:/var/lib/mysql/data
  17. networks:
  18. - overlay
  19. deploy:
  20. mode: replicated
  21. replicas: 2
  22. endpoint_mode: dnsrr
  23. volumes:
  24. db-data:
  25. networks:
  26. overlay:

LABELS

  • 指定服务的标签。这些标签仅在服务上设置,而不在服务的任何容器上设置。
  1. version: "3.7"
  2. services:
  3. web:
  4. image: web
  5. deploy:
  6. labels:
  7. com.example.description: "This label will appear on the web service"
  • 要在容器上设置标签,可以把labels键放在和image键同级.

MODE

  • 全局或复制(副本容器)
  1. version: "3.7"
  2. services:
  3. worker:
  4. image: dockersamples/examplevotingapp_worker
  5. deploy:
  6. mode: global

PLACEMENT

  • 指定约束和首选项的位置
  1. version: "3.7"
  2. services:
  3. db:
  4. image: postgres
  5. deploy:
  6. placement:
  7. constraints:
  8. - node.role == manager
  9. - engine.labels.operatingsystem == ubuntu 14.04
  10. preferences:
  11. - spread: node.labels.zone

REPLICAS

  • 如果复制了服务,请指定在任何给定时间应运行的容器数。
  1. version: "3.7"
  2. services:
  3. worker:
  4. image: dockersamples/examplevotingapp_worker
  5. networks:
  6. - frontend
  7. - backend
  8. deploy:
  9. mode: replicated
  10. replicas: 6

RESOURCES

  • 配置资源限制.
  • 在这个示例中,redis服务被限制为使用不超过50M的内存和0.50(单核的50%)的可用处理时间(CPU),并且具有20M的内存和0.25个CPU时间保留(始终可用).
  1. version: "3.7"
  2. services:
  3. redis:
  4. image: redis:alpine
  5. deploy:
  6. resources:
  7. limits:
  8. cpus: '0.50'
  9. memory: 50M
  10. reservations:
  11. cpus: '0.25'
  12. memory: 20M

Out Of Memory Exceptions (OOME)

  • 如果您的服务或容器尝试使用的内存超过系统可用的内存,则可能会遇到内存不足异常(OOME),并且内核OOM杀手可能会杀死容器或Docker守护程序。要防止这种情况发生,请确保您的应用程序在具有足够内存的主机上运行.

RESTART_POLICY

  • 配置是否以及如何在容器退出时重新启动容器.
  • condition: none,on-failure,any
  • delay: 重启尝试之间等待多长时间,默认0.
  • max_attempts: 在放弃之前尝试重启容器的次数.例如,如果max_attempts设置为“2”,并且第一次尝试时重新启动失败,则可能会尝试重新启动两次以上。
  • window: 在决定重启是否成功之前等待多长时间.
  1. version: "3.7"
  2. services:
  3. redis:
  4. image: redis:alpine
  5. deploy:
  6. restart_policy:
  7. condition: on-failure
  8. delay: 5s
  9. max_attempts: 3
  10. window: 120s

ROLLBACK_CONFIG

  • 配置在更新失败的情况下应如何回滚服务.
  • `parallelism: 一次回滚的容器数. 0为同时回滚.
  • delay: 每个容器组的回滚之间等待的时间.
  • failure_action: 如果回滚失败该怎么办。选择continue或者pause
  • monitor: 每次更新任务后的持续时间.ns|us|ms|s|m|h
  • max_failure_ratio: 回滚期间容忍的失败率.
  • order: 回滚期间的操作顺序。停止优先(旧任务在启动新任务之前停止)或启动优先(新任务首先启动,运行任务暂时重叠)(默认停止优先)

UPDATE_CONFIG

  • 配置服务应如何更新。用于配置滚动更新.
  • parallelism:一次更新的容器数
  • delay: 更新一组容器之间的等待时间.
  • failure_action: 如果更新失败该怎么办。选择continue,rollback,pause.默认pause.
  • monitor: 每次更新任务后的持续时间.(ns|us|ms|s|m|h)
  • max_failure_ratio: 更新期间容忍的失败率。
  • order : 更新期间的操作顺序。 stop-first之一(旧任务在启动新任务之前停止)或start-first(首先启动新任务,并且运行任务暂时重叠)(默认stop-first)
  1. version: "3.7"
  2. services:
  3. vote:
  4. image: dockersamples/examplevotingapp_vote:before
  5. depends_on:
  6. - redis
  7. deploy:
  8. replicas: 2
  9. update_config:
  10. parallelism: 2
  11. delay: 10s
  12. order: stop-first

dns

  • 自定义dns服务
  1. dns:
  2. - 8.8.8.8
  3. - 9.9.9.9

dns_search

  • 自定义DNS搜索域
  1. dns_search:
  2. - dc1.example.com
  3. - dc2.example.com

entrypoint

  • 覆盖默认entrypoint
entrypoint: /code/entrypoint.sh

env_file

  • 从文件添加环境变量
  1. env_file:
  2. - ./common.env
  3. - ./apps/web.env
  4. - /opt/secrets.env
  • Compose期望env文件中的每一行都是VAR = VAL格式。以#开头的行被视为注释并被忽略。空行也被忽略。

environment

  • 添加环境变量。您可以使用数组或字典。任何布尔值; true,false,yes no,需要用引号括起来
  1. environment:
  2. RACK_ENV: development
  3. SHOW: 'true'
  4. SESSION_SECRET:

expose

  • 暴露端口而不将它们发布到主机 - 它们只能被链接服务访问。只能指定内部端口
  1. expose:
  2. - "3000"
  3. - "8000"

external_links

  • 链接到此docker-compose.yml之外或甚至在Compose之外的容器。指定容器名称和链接别名.
  1. external_links:
  2. - redis_1
  3. - project_db_1:mysql
  4. - project_db_1:postgresql

extra_hosts

  • 添加主机名映射
  1. extra_hosts:
  2. - "somehost:162.242.195.82"
  3. - "otherhost:50.31.209.229"
  • 在该服务的容器内的/ etc / hosts中创建具有ip地址和主机名的条目.
  1. 162.242.195.82 somehost
  2. 50.31.209.229 otherhost

healthcheck

  • 配置运行的检查以确定此服务的容器是否“健康”.
  1. healthcheck:
  2. test: ["CMD", "curl", "-f", "http://localhost"]
  3. interval: 1m30s
  4. timeout: 10s
  5. retries: 3
  6. start_period: 40s
  7. test: ["CMD", "curl", "-f", "http://localhost"]
  8. test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
  9. test: curl -f https://localhost || exit 1

禁用运行状况检查

  1. healthcheck:
  2. disable: true

init

  • 在容器内运行init,转发信号并重新获得进程.
  1. version: "3.7"
  2. services:
  3. web:
  4. image: alpine:latest
  5. init: true

links

  • 链接到另一个服务中的容器。指定服务名称和链接别名.
  1. web:
  2. links:
  3. - db
  4. - db:database
  5. - redis
  • 链接服务的容器可以在与别名相同的主机名上访问,如果未指定别名,则可以访问服务名称。
  • 链接还以与depends_on相同的方式表达服务之间的依赖关系.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/180664
推荐阅读
相关标签
  

闽ICP备14008679号