我有以下docker-compose.yml
(稍作改动,但从here复制):
version: '2'
services:
mongodb:
image: mongo:3
volumes:
- /storage/mongo_data:/data/db
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1
volumes:
- /storage/es_data:/usr/share/elasticsearch/data
environment:
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
graylog:
image: graylog/graylog:3.0
volumes:
- /storage/graylog_journal:/usr/share/graylog/data/journal
environment:
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
links:
- mongodb:mongo
- elasticsearch
depends_on:
- mongodb
- elasticsearch
volumes:
mongo_data:
driver: local
es_data:
driver: local
graylog_journal:
driver: local
问题是,当我使用docker-compose
运行它时,它失败了,因为graylog
和elasticsearch
服务都无法访问/storage/graylog
和{{1} } 分别。我需要更改的是:
/storage/elasticsearch
chmod 1000:1000 -Rv /storage/elasticsearch
在主机上。
因此出现两个问题:
答案 0 :(得分:0)
Elasticsearch和Graylog都不以root用户身份在其容器中运行。
因此,如果您的用户/组将其装入容器,则他们的用户/组需要访问主机上的文件系统。
答案 1 :(得分:0)
compose文件创建数据卷,但是容器不使用它们!
原文:
volumes:
- graylog_journal:/usr/share/graylog/data/journal
您的更改:
volumes:
- /storage/graylog_journal:/usr/share/graylog/data/journal
这将在您的主机系统中创建数据目录,并且在您手中。