1.docker-compose命令模板
docker-compose.yml 作用:
compose以项目为核心,在项目中定义一组具有相同业务逻辑单元服务运行
注意:在编写docker-compose.yml文件时,所有的冒号(:)、短横线(-)后面都需要加一个空格,不然会出错。
version: '3'
services: #用来书写当前项目中哪些容器服务
tomcatservice: #服务名称 (服务id)
container_name: mytomcat #指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式 类似--name
image: tomcat:8.0-jre8 #使用哪一个镜像 类似image:tag
posts: #用来完成宿主机与容器内部端口映射关系(可以映射多个) 类似-p
- "8080:8080" #宿主机端口:容器内部端口
- "5672:5672" #宿主机端口:容器内部端口
volumes: #完成宿主机与容器中目录数据卷共享 类似-v
# - /root/apps:/user/local/tomcat/webapps #使用自定义路径映射(直接使用)
- tomcatwebapps:/user/local/tomcat/webapps #需要使用外部声明tomcatwebapps
networks: #代表当前 服务使用哪个网桥 类似--network
- mynetwork
#environment: #用来指定容器启动时的环境参数
# - MYSQL_ROOT_PASSWORD=ROOT
env_file: #用来将environment环境中配置放入指定配置文件中
- ./mysql.env #从mysql.env配置文件获取environment级别配置
depends_on: #代表这个容器必须依赖哪些容器启动后才能启动
- tomcatservice1 #依赖容器的服务名
- mysql
- redis
healthcheck:
test: ["CMD","curl","-f","http://localhost"]
interval: 1m30s #每90秒发送心跳
timeout: 10s #超时10秒算作心跳检查失败
retries: 3 #失败重试3次
tomcatservice1: #服务名称
container_name: mytomcat1 #指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式
image: tomcat:8.0-jre8 #使用哪一个镜像
posts: #用来完成宿主机与容器内部端口映射关系(可以映射多个)
- "8081:8080" #宿主机端口:容器内部端口
- "5673:5672" #宿主机端口:容器内部端口
volumes: #完成宿主机与容器中目录数据卷共享
# - /root/apps:/user/local/tomcat/webapps #使用自定义路径映射(直接使用)
- tomcatwebapps1:/user/local/tomcat/webapps #需要使用外部声明tomcatwebapps
networks: #代表当前 服务使用哪个网桥
- mynetwork
cmd: redis-service /... #用来覆盖容器默认启动的指令 类似
volumes: #声明上面 服务所使用的自动创建的卷名
tomcatwebapps1:
tomcatwebapps: #声明指定的卷名 compose自动创建 卷名。但是会在之前加入项目名(存放docker-compose.yml的目录名)
external: #使用自定义卷名
true #true确定使用指定卷名 注意:一旦使用外部自定义卷名,使用服务之前需手动创建卷名 (docker volume create volume_name),此处一般选择false关闭自定义卷名
networks: #定义服务用到的网桥
mynetwork: #定义上面的服务用到的网桥 默认创建就是bridge
external: #使用自定义网桥名
true #使用服务之前需手动创建卷名 (docker network create -d bridge hellonet)
1.env_file
从文件中获取环境变量,可以为单独的文件路径或列表
创建一个.env结尾的文件。
文件内部格式为 key=value
eg:在docker-compose的同级路径,创建mysql.env
MYSQL_ROOT_PASSWORD=ROOT
2.depends_on
代表这个容器必须依赖哪些容器启动后才能启动,后面的配置参数的容器的服务名。web服务不会等待依赖的服务完全启动之后,才会启动。
3.healthcheck
通过命令检查容器是否健康运行。
healthcheck:
test: ["CMD","curl","-f","http://localhost"]
interval: 1m30s #每90秒发送心跳
timeout: 10s #超时10秒算作心跳检查失败
retries: 3 #失败重试3次
4.sysctls
配置容器内核参数
sysctls:
- net.core.somaxconn=1024
- net.ipv4.tcp_syncookies=0
5.ulimits
指定容器的ulimits限制值 ,用来修改容器中系统内部进程数限制
ulimits:
noroc: 65535
nofile:
soft: 20000
hard: 40000
6.build指令
将制定的Dockerfile打包成对应的镜像,然后再运行该镜像
services:
demoapp: #服务名(即服务id)
build: #用来指定Dockerfile所在目录,先根据build中dockerfile自动构建镜像,自动运行容器
context: domopp #指定上下文目录dockerfile所在目录
dockerfile: Dockerfile #指定dockerfile名称
container_name: demoapp#指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式 类似--name
posts: #用来完成宿主机与容器内部端口映射关系(可以映射多个) 类似-p
- "8080:8080" #宿主机端口:容器内部端口
- "5672:5672" #宿主机端口:容器内部端口
networks:
- mynet
depends_on:
- tomcat01 #依赖容器的服务名
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/65765.html