我正在尝试在 AWS EC2 实例上使用 Docker 运行 Elasticsearch,但是当它运行时,几秒钟后将停止,你们中的任何人都经历过问题可能是什么?
这是我在docker-compose.yaml
中的 Elasticsearch 配置:
elasticsearch:
build:
context: ./elasticsearch
args:
- ELK_VERSION=${ELK_VERSION}
volumes:
- elasticsearch:/usr/share/elasticsearch/data
environment:
- cluster.name=laradock-cluster
- node.name=laradock-node
- bootstrap.memory_lock=true
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms7g -Xmx7g"
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- xpack.watcher.enabled=false
- cluster.initial_master_nodes=laradock-node
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
ports:
- "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
- "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
depends_on:
- php-fpm
networks:
- frontend
- backend
这是我的Dockerfile
:
FROM docker.elastic.co/elasticsearch/elasticsearch:7.5.1
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch discovery-ec2
EXPOSE 9200 9300
此外,我在 AWS EC2 实例上sysctl -w vm.max_map_count=655360
注意:我的 AWS EC2 实例是 Ubuntu 18.4
谢谢
我不确定您的docker-compose.yaml
,因为您没有在 docker 文件中引用它,但我能够重现该问题。我在我的 AWS 账户中启动了相同的 ubuntu 18.4,并使用您的dockerfile
使用以下命令启动 ES docker 容器:
docker build --tag=elasticsearch-custom .
docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom
我的 docker 容器在启动后也停止了,如下所示:
ubuntu@ip-172-31-32-95:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03cde4a19389 elasticsearch-custom "/usr/local/bin/dock…" 33 seconds ago Exited (78) 6 seconds ago mystifying_napier
在控制台上检查日志时,启动 docker 时,我发现以下错误:
错误:[1] 引导程序检查失败 [1]:默认发现设置 不适合生产使用;至少一个 [discovery.seed_hosts,discovery.seed_providers, 必须配置 cluster.initial_master_nodes]
这是众所周知的错误,只需将-e "discovery.type=single-node"
添加到docker run命令即可轻松解决。在 docker 运行命令中添加此命令后,如下所示:
docker run -e "discovery.type=single-node" -ti -v /usr/share/elasticsearch/data elasticsearch-custom
它的运行良好,如下所示:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
191fc3dceb5a elasticsearch-custom "/usr/local/bin/dock…" 8 minutes ago Up 8 minutes 9200/tcp, 9300/tcp recursing_elgamal