
최근 로그 분석이나 검색 서비스를 구축할 때 Elasticsearch 대안으로 많이 쓰이는 게 바로 OpenSearch인데요
아마존이 Elasticsearch 오픈소스 버전에서 갈라져 나온 검색엔진으로 무료로 사용할 수 있고 기능도 거의 동일합니다
오늘은 도커(Docker) 를 이용해서 OpenSearch와 웹 시각화 도구인 OpenSearch Dashboards를 한 번에 실행하는 방법을 소개할게요
도커의 기본적인 명령어입니다 참고하세요 :)
| 명령어 | 설명 |
| docker pull <이미지> | 이미지 다운로드 |
| docker images | 다운받은 이미지 목록 보기 |
| docker run <이미지> | 컨테이너 실행 |
| docker ps -a | 실행 중/중단된 컨테이너 목록 보기 (process status) |
| docker stop <이름> / docker rm <이름> | 컨테이너 중지 / 삭제 |
| docker-compse down | 컨테이너 + 네트워크 종료 |
| docker-compose up -d | Docker Compose 환경을 백그라운드에서 실행 |
docker-compose는 여러 개의 docker 컨테이너를 하나의 설정 파일로 묶어서 한번에 실행하고 관리할 수 있게 해주는 도구에요
아래는 docker-compose.yml 코드입니다
services:
opensearch-node-main:
image: opensearchproject/opensearch:latest #(공식 OpenSearch 서버 이미지)
container_name: opensearch-main
environment:
- discovery.type=single-node #(단일 노드 모드 설정)
- OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m #(Java 최적화 옵션)
- OPENSEARCH_USERNAME=admin #(기본 사용자 이름)
- OPENSEARCH_PASSWORD=1234 #(기본 사용자 비밀번호)
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=1234 #(초기 관리자 비밀번호)
- plugins.security.ssl.http.enabled=false #(HTTPS 보안 비활성화 (테스트 환경용; 실제 운영에서는 true로 해야 함))
ulimits:
memlock: #(메모리 잠금 제한)
soft: -1
hard: -1
volumes:
- opensearch-data-main:/usr/share/opensearch/data #(데이터 저장 경로)
ports:
- 9200:9200 #(OpenSearch API 포트)
- 9600:9600 #(OpenSearch 모니터링 포트)
networks:
- opensearch-net #(네트워크 설정)
opensearch-dashboards:
image: opensearchproject/opensearch-dashboards:latest
container_name: opensearch-dashboards-main
ports:
- 5601:5601
environment:
- OPENSEARCH_HOSTS=["http://opensearch-node-main:9200"] #대시보드가 접속할 OpenSearch 서버의 주소
- DISABLE_SECURITY_DASHBOARDS_PLUGIN=true #로그인 같은 보안 기능 끄기 (테스트용)
networks:
- opensearch-net
volumes:
opensearch-data-main:
networks:
opensearch-net: # 두 컨테이너(opensearch-node-main, dashboards)가 같은 네트워크 안에서 통신하게 함
터미널에서 docker-compose.yml 파일이 있는 위치로 이동합니다


이 오픈서치 도커 구성은 로컬 개발 환경이나 테스트용으로 정말 간편합니다
단일 명령어(docker-compose up -d)로 검색엔진과 대시보드가 모두 실행되고, 포트만 열어주면 테스트용으로 잘 사용할 수 있어요
도커를 활용하면 복잡한 설치 없이도 검색 엔진 시스템을 빠르게 세팅할 수 있으니 LLM 프로젝트 할때 테스트용으로 사용하시는 걸 추천드려요
만약 아래처럼 OpenSearch Dashboards server is not ready yet 이라고 뜨는 경우 opensearch 컨테이너가 제대로 떠있지 않은상태입니다

그럴 경우 터미널 입력창에 docker ps 를 치면 현재 컨테이너가 떠있는지 확인하실 수 있습니다

지금 저처럼 PORTS 부분에 9200->9200 이 안 보이면 → docker-compose에 포트 바인딩이 안 되어 있다는 뜻이에요!
docker logs opensearch-main 으로 docker의 log를 확인하면 왜 안떠있는지 알 수 있어요

전 패스워드가 1234로 설정해서 ㅎㅎ.. 패스워드가 짧아 컨테이너가 뜨지 않았네요
비밀번호를 다시 설정한 뒤 다시 저장합니다
비밀번호는 User1212!@로 설정했습니다

그 후, docker-compose down을 해서 현재 실행 중인 모든 컨테이너, 네트워크, 볼륨 등을 종료하는 명령어를 실행합니다
docker-compose up -d로 백그라운드에서 다시 재실행합니다


로컬호스트:5601 포트로 들어가게되면 오픈서치 검색엔진이 떠있는것을 확인하실 수 있습니다
이처럼 손쉽게 로컬에서 오픈서치를 도커로 구성해서 오픈서치 테스트를 해볼 수 있는 점이 가장 좋은 것 같습니다

CLI로 보지 않아도 docker desktop을 설치하셨다면 현재 컨테이너가 실행되고 있는지 확인하실 수 있어요
종료할때도 docker-compose down을 하지 않고 중지버튼을 누르면 컨테이너가 종료되니 참고하세요 ~



