elk完整的docker-compose.yaml并带有volumes 并运行elk 怎么写
时间: 2024-09-19 15:11:32 浏览: 75
要在Docker Compose中配置一个完整的ELK(Elasticsearch、Logstash 和 Kibana)堆栈,并包含数据卷以持久化数据,可以按照以下步骤编写`docker-compose.yml`文件:
```yaml
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.x
container_name: es_container
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node # 如果集群需求复杂,可改为"cluster"
volumes:
- ./es_data:/usr/share/elasticsearch/data # 创建数据卷映射宿主机目录到容器内
ports:
- "9200:9200" # 开放访问端口
logstash:
image: docker.elastic.co/logstash/logstash:7.x
container_name: ls_container
depends_on:
- elasticsearch
environment:
- LS_JAVA_OPTS="-Xms512m -Xmx512m"
ports:
- "5044:5044" # Logstash HTTP插件监控端口
volumes:
- ./logstash_config:/etc/logstash/conf.d # 容器内部配置文件来自宿主机目录
- ./logstash_data:/var/lib/logstash # 数据存储卷
kibana:
image: docker.elastic.co/kibana/kibana:7.x
container_name: kb_container
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- "5601:5601" # Kibana访问端口
volumes:
- ./kibana_config:/usr/share/kibana/config # 配置文件映射
# 宿主机目录与容器内部数据卷关联
volumes:
es_data:
logstash_data:
networks:
default:
driver: bridge
```
在这个配置中:
1. `elasticsearch`服务使用单节点模式,并设置环境变量以优化内存使用。数据卷用于保存索引数据。
2. `logstash`依赖于`elasticsearch`,并将配置文件和数据存储在宿主机上相应的目录。
3. `kibana`连接到`elasticsearch`,并在启动时从宿主机加载配置。
要运行这个堆栈,首先创建上述`docker-compose.yml`文件,然后在终端中导航到该文件所在的目录,执行命令`docker-compose up -d`,这将创建并启动所有服务。如果需要停止堆栈,使用`docker-compose down`。
阅读全文