date: 2020-04-02title: docker-compose.yml文件实例 #标题
tags: docker-compose #标签
categories: docker # 分类

本博文用于记录下docker-compose.yml文件的规范格式,同样适用于docker stack指令运行。

部署tomcat容器

  1. [root@nginx ~]# cat docker-compose.yml # tomcat的部署文件
  2. version: "3.3" # 指定版本
  3. networks: # 创建网络
  4. swarm-net: # 网络名称为swarm-net
  5. external: true # 表示该网络已经存在,无需创建(如果网络已存在,而不增加此选项,可能会报错)
  6. services: # 定义服务
  7. acenter: # 服务名称为acenter
  8. image: hub.dayu-boss.com/core/tomcat # 指定镜像
  9. networks: # 指定使用swarm-net网络
  10. - swarm-net
  11. hostname: acenter # 指定容器内的主机名为acenter
  12. environment: # 定义变量列表
  13. - idc=A
  14. - JAVA_OPT=-Xms1000m -Xmx1000m -Xmn800m
  15. healthcheck: # 定义健康检测
  16. disable: true # disable的值为true,则表示禁用健康检测
  17. deploy: # 定义部署相关参数
  18. replicas: 1 # 指定副本数量
  19. placement: # 限制容器运行在哪个节点
  20. constraints: [node.labels.line == 1] #
  21. restart_policy: # 配置如何在退出容器时重新启动容器
  22. condition: on-failure # 可选none,on-failure或any(默认值:any)
  23. delay: 5s # 设置多久后重启(默认值: 0)
  24. max_attempts: 3 # 尝试重新启动容器的次数,超出次数,则不再尝试(默认值:一直重试)
  25. window: 120s # 设置容器重启超时时间(默认值: 0)
  26. volumes: # 将主机的文件挂载到容器里
  27. - /var/gb/data/pg/pg_boss/backup:/var/data/backup # 冒号前面是主机上的文件,冒号后面是容器内的文件路径
  28. - /var/gb/apps/acenter:/usr/local/tomcat/webapps/acenter # 同上
  29. - /var/gb/logs/acenter:/usr/local/tomcat/logs/ # 同上
  30. ############### 定义第二个service ##################
  31. boss: # service名称为boss
  32. image: hub.dayu-boss.com/core/tomcat # 指定镜像
  33. networks: # 指定网络为swarm-net
  34. - swarm-net
  35. hostname: boss # 指定容器中的主机名
  36. environment: # 配置环境变量
  37. - idc=A
  38. - JAVA_OPT=-Xms2500m -Xmx2500m -Xmn1500m
  39. healthcheck: # 关闭健康检测
  40. disable: true
  41. deploy: # 定义部署相关信息
  42. replicas: 1 # 容器副本数量为1个
  43. placement: # 限制容器运行在哪个节点
  44. constraints: [node.labels.line == 1]
  45. restart_policy: # 制定重启策略,参考上面第一个service的注释
  46. condition: on-failure
  47. delay: 5s
  48. max_attempts: 3
  49. window: 120s
  50. volumes: # 同第一个service的注释
  51. - /var/gb/data/pg/pg_boss/backup:/var/data/backup
  52. - /var/gb/apps/boss:/usr/local/tomcat/webapps/boss
  53. - /var/gb/logs/boss:/usr/local/tomcat/logs/
  54. ################### 定义第三个service ##################
  55. boss-api: # service名称为boss-api
  56. image: hub.dayu-boss.com/core/tomcat-php # 指定镜像
  57. networks: # 指定网络为swarm-net
  58. - swarm-net
  59. hostname: boss-api # 配置容器中的主机名
  60. healthcheck: # 关闭健康检测
  61. disable: true
  62. extra_hosts: # 添加主机名映射。类似 docker client --add-host。
  63. - "pg_11-dd1:182.16.68.126"
  64. - "pg_12-dd2:182.16.66.166"
  65. - "pg_13-dd3:182.16.62.44"
  66. - "pg_11-dd4:182.16.60.232"
  67. - "pg_12-dd4:182.16.60.232"
  68. - "pg_13-dd4:182.16.60.232"
  69. - "pg-01.d1:10.10.6.1"
  70. - "pg-02.d2:10.10.6.2"
  71. - "pg-03.d3:10.10.6.3"
  72. - "pg-01.d4:10.10.6.4"
  73. - "pg-02.d4:10.10.6.4"
  74. - "pg-03.d4:10.10.6.4"
  75. - "pg-05.d5:10.10.6.5"
  76. - "pg-06.d6:10.10.6.6"
  77. - "pg-mx.d7:10.10.6.7"
  78. - "pg-pb.d7:10.10.6.7"
  79. - "pg-05.d8:10.10.6.8"
  80. - "pg-06.d8:10.10.6.8"
  81. - "pg-mx.d8:10.10.6.8"
  82. - "pg-11.d5:10.10"
  83. # 以上会在此服务内部容器中/etc/hosts创建一个具有IP地址和主机名的映射关系,如下:
  84. # 182.16.68.126 pg_11-dd1
  85. # 182.16.66.166 pg_12-dd2
  86. # ....... 省略部分内容

部署nginx容器

大多数参数在上面都写下来了,这里就省略了。

  1. [root@nginx ~]# cat docker-compose.yml
  2. version: "3.3"
  3. networks:
  4. swarm-net:
  5. external: true
  6. services:
  7. core-ngx:
  8. image: hub.dayu-boss.com/core/openresty:gb
  9. hostname: core-ngx
  10. networks:
  11. swarm-net:
  12. aliases: # 同一网络上的其他容器可以使用服务名称或此别名来连接到对应容器的服务。
  13. - proxy-server
  14. - gb-rcenter
  15. - gb-mdcenter
  16. - gb-fserver
  17. - 3rd.game.api.com
  18. - 3rd.pay.api.com
  19. environment: # 添加环境变量
  20. - nginx_line=line1-
  21. ports: # 暴露端口信息
  22. - target: 80 # 暴露的是容器内80端口
  23. published: 13380 # 对应的主机端口是13380
  24. protocol: tcp # 协议为tcp
  25. mode: host # 为主机模式
  26. deploy:
  27. replicas: 1
  28. placement:
  29. constraints: [node.labels.ngx == 1]
  30. restart_policy:
  31. condition: on-failure
  32. delay: 5s
  33. max_attempts: 3
  34. window: 120s
  35. healthcheck:
  36. disable: true
  37. volumes:
  38. - /var/gb/conf/core-ngx-a:/usr/local/openresty/nginx/conf
  39. - /var/gb/logs/core-ngx-a:/data/nginx/logs