date: 2020-04-02title: docker-compose.yml文件实例 #标题
tags: docker-compose #标签
categories: docker # 分类
本博文用于记录下docker-compose.yml文件的规范格式,同样适用于docker stack指令运行。
部署tomcat容器
[root@nginx ~]# cat docker-compose.yml # tomcat的部署文件version: "3.3" # 指定版本networks: # 创建网络swarm-net: # 网络名称为swarm-netexternal: true # 表示该网络已经存在,无需创建(如果网络已存在,而不增加此选项,可能会报错)services: # 定义服务acenter: # 服务名称为acenterimage: hub.dayu-boss.com/core/tomcat # 指定镜像networks: # 指定使用swarm-net网络- swarm-nethostname: acenter # 指定容器内的主机名为acenterenvironment: # 定义变量列表- idc=A- JAVA_OPT=-Xms1000m -Xmx1000m -Xmn800mhealthcheck: # 定义健康检测disable: true # disable的值为true,则表示禁用健康检测deploy: # 定义部署相关参数replicas: 1 # 指定副本数量placement: # 限制容器运行在哪个节点constraints: [node.labels.line == 1] #restart_policy: # 配置如何在退出容器时重新启动容器condition: on-failure # 可选none,on-failure或any(默认值:any)delay: 5s # 设置多久后重启(默认值: 0)max_attempts: 3 # 尝试重新启动容器的次数,超出次数,则不再尝试(默认值:一直重试)window: 120s # 设置容器重启超时时间(默认值: 0)volumes: # 将主机的文件挂载到容器里- /var/gb/data/pg/pg_boss/backup:/var/data/backup # 冒号前面是主机上的文件,冒号后面是容器内的文件路径- /var/gb/apps/acenter:/usr/local/tomcat/webapps/acenter # 同上- /var/gb/logs/acenter:/usr/local/tomcat/logs/ # 同上############### 定义第二个service ##################boss: # service名称为bossimage: hub.dayu-boss.com/core/tomcat # 指定镜像networks: # 指定网络为swarm-net- swarm-nethostname: boss # 指定容器中的主机名environment: # 配置环境变量- idc=A- JAVA_OPT=-Xms2500m -Xmx2500m -Xmn1500mhealthcheck: # 关闭健康检测disable: truedeploy: # 定义部署相关信息replicas: 1 # 容器副本数量为1个placement: # 限制容器运行在哪个节点constraints: [node.labels.line == 1]restart_policy: # 制定重启策略,参考上面第一个service的注释condition: on-failuredelay: 5smax_attempts: 3window: 120svolumes: # 同第一个service的注释- /var/gb/data/pg/pg_boss/backup:/var/data/backup- /var/gb/apps/boss:/usr/local/tomcat/webapps/boss- /var/gb/logs/boss:/usr/local/tomcat/logs/################### 定义第三个service ##################boss-api: # service名称为boss-apiimage: hub.dayu-boss.com/core/tomcat-php # 指定镜像networks: # 指定网络为swarm-net- swarm-nethostname: boss-api # 配置容器中的主机名healthcheck: # 关闭健康检测disable: trueextra_hosts: # 添加主机名映射。类似 docker client --add-host。- "pg_11-dd1:182.16.68.126"- "pg_12-dd2:182.16.66.166"- "pg_13-dd3:182.16.62.44"- "pg_11-dd4:182.16.60.232"- "pg_12-dd4:182.16.60.232"- "pg_13-dd4:182.16.60.232"- "pg-01.d1:10.10.6.1"- "pg-02.d2:10.10.6.2"- "pg-03.d3:10.10.6.3"- "pg-01.d4:10.10.6.4"- "pg-02.d4:10.10.6.4"- "pg-03.d4:10.10.6.4"- "pg-05.d5:10.10.6.5"- "pg-06.d6:10.10.6.6"- "pg-mx.d7:10.10.6.7"- "pg-pb.d7:10.10.6.7"- "pg-05.d8:10.10.6.8"- "pg-06.d8:10.10.6.8"- "pg-mx.d8:10.10.6.8"- "pg-11.d5:10.10"# 以上会在此服务内部容器中/etc/hosts创建一个具有IP地址和主机名的映射关系,如下:# 182.16.68.126 pg_11-dd1# 182.16.66.166 pg_12-dd2# ....... 省略部分内容
部署nginx容器
大多数参数在上面都写下来了,这里就省略了。
[root@nginx ~]# cat docker-compose.ymlversion: "3.3"networks:swarm-net:external: trueservices:core-ngx:image: hub.dayu-boss.com/core/openresty:gbhostname: core-ngxnetworks:swarm-net:aliases: # 同一网络上的其他容器可以使用服务名称或此别名来连接到对应容器的服务。- proxy-server- gb-rcenter- gb-mdcenter- gb-fserver- 3rd.game.api.com- 3rd.pay.api.comenvironment: # 添加环境变量- nginx_line=line1-ports: # 暴露端口信息- target: 80 # 暴露的是容器内80端口published: 13380 # 对应的主机端口是13380protocol: tcp # 协议为tcpmode: host # 为主机模式deploy:replicas: 1placement:constraints: [node.labels.ngx == 1]restart_policy:condition: on-failuredelay: 5smax_attempts: 3window: 120shealthcheck:disable: truevolumes:- /var/gb/conf/core-ngx-a:/usr/local/openresty/nginx/conf- /var/gb/logs/core-ngx-a:/data/nginx/logs
