version: '3'
networks:
byfn:
services:
consul:
image: consul
container_name: consul
restart: always #重启docker引擎后该容器也重启
command: consul agent -server -ui -node=node -bind=0.0.0.0 -client=0.0.0.0 -data-dir /consul/data -config-dir /consul/config -bootstrap-expect=1
volumes: #卷挂载路径设置
- ./consul/config:/consul/config #将容器内的日志挂载到宿主里
- ./consul/data:/consul/data
ports:
- 8500:8500
networks:
- byfn
redis:
image: redis
container_name: redis
restart: always #重启docker引擎后该容器也重启
volumes: #指定挂载目录
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf #redis.conf文件和data目录分别映射了主机的redis.conf文件和主机的data目录
- ./redis/data:/data
command:
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf " #使用command可以覆盖容器启动后默认执行的命令。这里启动执行指定的redis.conf文件
ports:
- 6379:6379
networks:
- byfn
es:
container_name: es
hostname: es
image: elasticsearch:7.1.1
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
- "ES_JAVA_OPTS=-Xmx2048m -Xmx2048m" #设置使用jvm内存大小
- "discovery.type=single-node" #以单一节点模式启动
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- TAKE_FILE_OWNERSHIP=true #volumes 挂载权限问题 不加上会报java虚拟机错误
- "ELASTIC_PASSWORD=1qazXSW" # elastic账号密码
volumes:
- ./es-kibana/es/master/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./es-kibana/es/master/data:/usr/share/elasticsearch/data
- ./es-kibana/es/master/logs:/usr/share/elasticsearch/logs
networks:
- byfn
kibana:
container_name: kibana
hostname: kibana
image: kibana:7.1.1
restart: always
ports:
- 5601:5601
volumes:
- ./es-kibana/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
environment:
- elasticsearch.hosts=http://10.0.171.103:9200
depends_on:
- es
networks:
- byfn
elasticsearch.yml 文件配置如下:
cluster.name: "elasticsearch"
cluster.max_shards_per_node: 12000
network.host: 0.0.0.0
# 安全认证
xpack.security.enabled: true
http.cors.allow-headers: "Authorization"
kibana.yml文件配置如下:
# 服务端口
server.port: 5601
# 服务IP
server.host: "0.0.0.0"
# ES
elasticsearch.hosts: ["http://10.0.171.103:9200"]
# 汉化
i18n.locale: "zh-CN"
elasticsearch.username: "elastic" # es账号
elasticsearch.password: "1qazXSW" # es密码