Elasticsearch 설치 및 배포
1. Elasticsearch 이미지 다운로드
# Docker Hub에서 Elasticsearch 버전 확인
docker search elasticsearch
# 특정 버전의 Elasticsearch 이미지 다운로드
docker pull docker.io/library/elasticsearch:7.17.0
2. Elasticsearch 컨테이너 실행
# Elasticsearch 컨테이너 생성 및 실행
docker run -td --name elasticsearch_node -p 9200:9200 -p 9300:9300 \
-e JAVA_OPTS="-Xms64m -Xmx128m" \
-e "discovery.type=single-node" \
elasticsearch:7.17.0
3. Elasticsearch 설정 파일 수정
# 컨테이너 내 설정 파일을 호스트 시스템으로 복사
docker cp elasticsearch_node:/usr/share/elasticsearch/config/elasticsearch.yml ./custom_es_config.yml
# 설정 파일 편집
vi custom_es_config.yml
수정할 설정 내용:
cluster.name: "secure-es-cluster"
network.host: 0.0.0.0
# 외부 접속 허용
http.host: 0.0.0.0
# CORS 설정 (elasticsearch-head와의 연동을 위해)
http.cors.enabled: true
http.cors.allow-origin: "*"
# 인증 헤더 허용
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
# 보안 기능 활성화
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
# 수정된 설정 파일을 컨테이너에 적용
docker cp ./custom_es_config.yml elasticsearch_node:/usr/share/elasticsearch/config/elasticsearch.yml
# Elasticsearch 서비스 재시작
docker restart elasticsearch_node
4. 사용자 비밀번호 설정
# 컨테이너 내부로 진입
docker exec -it elasticsearch_node bash
# 기본 사용자 비밀번호 설정 (elastic, apm_system, kibana 등)
bin/elasticsearch-setup-passwords auto
Elasticsearch-head 도구 설치 및 설정
1. Elasticsearch-head 이미지 다운로드
# Elasticsearch-head 이미지 다운로드
docker pull mobz/elasticsearch-head:5
2. Elasticsearch-head 컨테이너 실행
# Elasticsearch-head 컨테이너 실행
docker run --name es_head_proxy -p 9100:9100 -d mobz/elasticsearch-head:5
3. 설정 파일 수정
elasticsearch-head는 기본적으로 application/x-www-form-urlencoded 방식을 사용하며, 이 방식은 인덱스 생성 시 오류를 발생시킬 수 있습니다.
# elasticsearch-head 컨테이너 내 vendor.js 파일 수정
# 파일을 호스트 시스템으로 복사
docker cp es_head_proxy:/usr/src/app/_site/vendor.js ./modified_vendor.js
# 6886, 7574행 수정 (Content-Type 변경)
sed -i 's/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/g' modified_vendor.js
# 수정된 파일을 컨테이너로 복사
docker cp ./modified_vendor.js es_head_proxy:/usr/src/app/_site/vendor.js
# 컨테이너 재시작
docker restart es_head_proxy
4. 연동 확인
비밀번호 미설정 시 접속 주소: http://localhost:9100
비밀번호 설정 시 접속 주소: http://localhost:9100/?auth_user=elastic&auth_password=설정한비밀번호