【docker】docker-compose.yml 文件详解

打印 上一主题 下一主题

主题 534|帖子 534|积分 1602

1.docker-compose.yml 文件详解 
  1. --默认的模板名是docker-compose.yml
  2. --文件格式示例:
  3. version: "3.1" -- 指定compose 文件的版本
  4. services: --定义所有的service 信息
  5. mysql: -- 服务名字
  6. restart: always --定义容器重启策略,always 无论如何容器都会重启
  7. image: 192.168.1.11:443/myharbor/mysql:5.7.21 -- 指定docker 镜像, 可以是远程仓
  8. 库镜像、本地镜像
  9. container_name: app-mysql --指定容器的名称(等同于docker run --name 的作用)
  10. ports: -- 建立宿主机和容器之间的端口映射关系, ports 支持两种语法格式,
  11. - 13306:3306 --容器的3306 端口和宿主机的13306 端口建立映射关系
  12. # - "3000" 暴露容器的3000 端口, 宿主机的端口由docker 随机映射一个没有被占用的端口
  13. # - "3000-3005" 暴露容器的3000 到3005 端口, 宿主机的端口由docker 随机映射没有被占用的端口
  14. # "127.0.0.1:8001:8001" # 指定映射宿主机的指定地址的
  15. # - "6060:6060/udp" # 指定协议
  16. #ports: #v3.2 新增的语法格式
  17. #- target: 3306 # 容器端口
  18. # published: 13306 # 宿主机端口
  19. # protocol: tcp # 协议类型
  20. # mode: host # host 在每个节点上发布主机端口, ingress 对于群模式端口进行负载均衡
  21. networks: -- 定义networks 信息
  22. - overlay -- overlay 驱动程序创建一个跨多个节点命名的网络
  23. environment: --设置环境变量, environment 的值可以覆盖env_file 的值(等同于
  24. docker run --env 的作用)
  25. - MYSQL_ROOT_PASSWORD=rootroot
  26. - TZ=Asia/Shanghai
  27. command: --覆盖容器启动后默认执行的命令, 支持shell 格式和[] 格式
  28. --character-set-server=utf8mb4
  29. --collation-server=utf8mb4_general_ci
  30. --explicit_defaults_for_timestamp=true
  31. --lower_case_table_names=1
  32. --max_allowed_packet=128M
  33. --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
  34. volumes: --定义容器和宿主机的卷映射关系, 其和networks 一样可以位于services 键的二级键和compose 顶级键, 如果需要跨服务间使用则在顶级键定义, 在services 中引用
  35. - /data/mysql/data:/data/mysql/data
复制代码
2.volumes 的简短语法格式示例:
  1. volumes:
  2. - /var/lib/mysql # 映射容器内的/var/lib/mysql 到宿主机的一个随机目录中
  3. - /data/mysql:/var/lib/mysql # 映射容器内的/var/lib/mysql 到宿主机的/data/mysql
  4. - ~/configs:/etc/configs/:ro # 映射容器宿主机的目录到容器中去,权限只读
  5. - mysqlvolume:/var/lib/mysql # mysqlvolume 为volumes 顶级键定义的目录,
  6.         --在此处直接调用
复制代码
3.volumes 的新版本语法格式示例
  1. --(v3.2 新增的语法格式,和K8S 类似)
  2. volumes:
  3. - type: volume --mount 的类型, 必须是bind、volume 或tmpfs
  4.         source: mysqdata --宿主机目录
  5.         target: /var/lib/mysql --容器目录
  6.         volume: --配置额外的选项, 其key必须和type 的值相同
  7.         nocopy: true -- volume 额外的选项,在创建卷时禁用从容器复制数据
  8. - type: bind -- volume 模式只指定容器路径即可, 宿主机路径随机生成; bind 需要指定容器和宿主机的映射路径
  9.         source: /data/mysql/data/
  10.         target: /var/lib/mysql
  11.         read_only: true --设置文件系统为只读文件系统
  12. volumes:
  13.         mysqdata: --定义在volume, 可在所有服务中调用
复制代码
4.关于布署参数阐明
  1. tomcat:
  2. restart: always
  3. image: tomcat:20220529
  4. container_name: app-tomcat
  5. ports:
  6. - 8080:8080
  7. environment:
  8. - TZ=Asia/Shanghai
  9. networks:
  10. - overlay
  11. volumes:
  12. - /data/tomcat/webapps:/usr/local/tomcat/webapps
  13. - /data/tomcat/logs:/usr/local/tomcat/logs
  14. deploy:
  15. replicas: 2 --deploy 的mode 为replicated 时, 指定容器副本的数量
  16. update_config: --用于配置滚动更新配置
  17. parallelism: 2 --一次性更新的容器数量
  18. delay: 10s --更新一组容器之间的间隔时间
  19. restart_policy: --定义容器重启策略, 用于代替restart 参数
  20. condition: on-failure --只有当容器内部应用程序出现问题才会重启
  21. --模板文件是Compose 的核心,涉及的指令关键字比较多,
  22. --但是大部分的指令与docker run 相关的
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表