docker-compose.yml文件配置由yml格式来编写。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
version: '2.2'
services:
es-node1:
image: elasticsearch:6.7.2
container_name: elasticsearch1
restart: always
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- ./es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./es/data1:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
ulimits:
memlock:
soft: -1
hard: -1
networks:
- es_network
kibana:
image: docker.elastic.co/kibana/kibana:6.7.2
container_name: kibana
environment:
- I18N_LOCALE=zh-CN
- XPACK_GRAPH_ENABLED=true
- TIMELION_ENABLED=true
- XPACK_MONITORING_COLLECTION_ENABLED="true"
ports:
- "5601:5601"
links:
- es-node1:elasticsearch
depends_on:
- es-node1
networks:
- es_network
networks:
es_network:
driver: bridge
一份标准配置文件应该包含 version、services、networks 三大部分。
-
version:
指定本 yml 依从的 compose 哪个版本制定的。 -
services
-
es-node1、 kibana:
用户自定义服务名。
-
image:
指定容器运行的镜像,如果本地存在则加载本地,如果没有,则pull。
-
container_name:
用户自定义容器名。
-
build:
指定为构建镜像上下文路径。
-
restart:
- no:是默认的重启策略,在任何情况下都不会重启容器。 - always:容器总是重新启动。 - on-failure:在容器非正常退出时(退出状态非0),才会重启容器。 - unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
-
environment:
设置镜像环境变量。
-
volumes:
将主机的数据卷或着文件挂载到容器里。
-
links:
下面depends_on那个标签解决的是启动顺序问题,这个标签解决的是容器连接问题 -
depends_on:
设置依赖关系,先启动es-node1,再启动kibana。
-
ports:
映射端口
-
env_file:
从文件添加环境变量。可以是单个值或列表的多个值。
-
expose:
暴露端口,但不映射到宿主机,只被连接的服务访问。
-
networks:配置容器连接的网络,引用顶级 networks 下的条目 。
-
network_mode:
设置网络模式。
- es_network:
自定义网络。
- driver:
bridge
连接方式是桥接。