Docker Build에서 Elasticsearch에 초기 데이터를 입력하고 싶습니다 🐳
4357 단어 도커Elasticsearch
소개
"아아, 틀렸어..."
"다시 시도..."
"컨테이너를 재부팅하고 초기 데이터를 다시 넣어야합니다 ..."
Elasticsearch를 개발에 사용하면 이런 일이 자주 있습니다.
그런 당신에게, Docker로 사용하는 개발 환경용의 Elasticsearch에 초기 데이터를 투입해 두자, 라고 하는 작은 재료입니다.
환경
데이터 샘플
Elasticsearch 공식에서 셰익스피어 데이터를 가져옵니다.
Loading sample data | Kibana Guide [7.1] | Elastic
흐름
Dockerfile에 데이터를 입력합니다.
Dockerfile에 데이터를 입력합니다.
입니다.
wait-for-it.sh
라는 것은, 서비스의 기동을 감시해 주는 쉘 스크립트입니다.Docker의 공식 문서에서도 소개됩니다.
Control startup and shutdown order in Compose | Docker Documentation
파일들
github에 파일을 두고 있습니다.
jrfk/docker-es-entry-initial-data
Dockerfile
이런 느낌입니다.
FROM docker.elastic.co/elasticsearch/elasticsearch:7.10.0
## data
RUN mkdir /data && chown -R elasticsearch:elasticsearch /data
COPY ./data/ /data/
RUN chmod 755 /data/*
## wait-for-it
ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /utils/wait-for-it.sh
RUN chown -R elasticsearch:elasticsearch /utils/wait-for-it.sh && chmod 755 /utils/wait-for-it.sh
## RUN
RUN echo 'discovery.type: single-node' >> config/elasticsearch.yml
RUN /usr/local/bin/docker-entrypoint.sh elasticsearch -p /tmp/epid & /bin/bash /utils/wait-for-it.sh -t 0 localhost:9200 -- /data/es_init.sh; kill $(cat /tmp/epid) && wait $(cat /tmp/epid); exit 0;
RUN echo 'discovery.type: single-node' >> config/elasticsearch.yml
하지만 7세대 Elasticsearch에서 node의 지정이 필수입니다.
개발 환경이므로 single-node에서 사용해 봅시다.
시작
다음 명령을 실행해 봅시다.
docker-compose build
docker-compose up -d
확인
데이터가 투입되고 있는 것을 확인할 수 있을까 생각합니다!
전 자료
Stack Overflow에 원본 자료가 있습니다.
이대로 하면, 이런 에러가 나서 기동할 수 없어서.
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
7세대 ElasticSearch에서 기동시에 node의 지정이 필수가 되고 있기 때문이었습니다.
How to add an elasticsearch index during docker build - Stack Overflow
Reference
이 문제에 관하여(Docker Build에서 Elasticsearch에 초기 데이터를 입력하고 싶습니다 🐳), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jrfk/items/a8d63cb1130304616bc0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FROM docker.elastic.co/elasticsearch/elasticsearch:7.10.0
## data
RUN mkdir /data && chown -R elasticsearch:elasticsearch /data
COPY ./data/ /data/
RUN chmod 755 /data/*
## wait-for-it
ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /utils/wait-for-it.sh
RUN chown -R elasticsearch:elasticsearch /utils/wait-for-it.sh && chmod 755 /utils/wait-for-it.sh
## RUN
RUN echo 'discovery.type: single-node' >> config/elasticsearch.yml
RUN /usr/local/bin/docker-entrypoint.sh elasticsearch -p /tmp/epid & /bin/bash /utils/wait-for-it.sh -t 0 localhost:9200 -- /data/es_init.sh; kill $(cat /tmp/epid) && wait $(cat /tmp/epid); exit 0;
다음 명령을 실행해 봅시다.
docker-compose build
docker-compose up -d
확인
데이터가 투입되고 있는 것을 확인할 수 있을까 생각합니다!
전 자료
Stack Overflow에 원본 자료가 있습니다.
이대로 하면, 이런 에러가 나서 기동할 수 없어서.
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
7세대 ElasticSearch에서 기동시에 node의 지정이 필수가 되고 있기 때문이었습니다.
How to add an elasticsearch index during docker build - Stack Overflow
Reference
이 문제에 관하여(Docker Build에서 Elasticsearch에 초기 데이터를 입력하고 싶습니다 🐳), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jrfk/items/a8d63cb1130304616bc0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Stack Overflow에 원본 자료가 있습니다.
이대로 하면, 이런 에러가 나서 기동할 수 없어서.
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
7세대 ElasticSearch에서 기동시에 node의 지정이 필수가 되고 있기 때문이었습니다.
How to add an elasticsearch index during docker build - Stack Overflow
Reference
이 문제에 관하여(Docker Build에서 Elasticsearch에 초기 데이터를 입력하고 싶습니다 🐳), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jrfk/items/a8d63cb1130304616bc0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)