使用Docker Compose快速部署appbaseio/dejavu与OpenSearch环境
概述
appbaseio/dejavu是一个开源的Elasticsearch/OpenSearch数据浏览器,它提供了一个直观的Web界面,让用户能够轻松地浏览、搜索和管理存储在Elasticsearch或OpenSearch中的数据。本文将详细介绍如何使用Docker Compose快速搭建一个包含OpenSearch搜索引擎和dejavu浏览器的完整开发环境。
环境准备
在开始之前,请确保您的系统已经安装了以下软件:
- Docker(版本17.12.0或更高)
- Docker Compose(版本1.21.0或更高)
配置文件解析
下面我们来详细分析docker-compose.yml文件中的各个配置项:
OpenSearch服务配置
opensearch:
image: opensearchproject/opensearch:2.17.0
container_name: opensearch
environment:
- 'DISABLE_SECURITY_PLUGIN=true'
- discovery.type=single-node
- http.port=9200
- http.cors.enabled=true
- http.cors.allow-origin=http://localhost:1358,http://127.0.0.1:1358
- http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
- http.cors.allow-credentials=true
- bootstrap.memory_lock=true
- 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
ports:
- '9200:9200'
- '9300:9300'
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- './data_os:/usr/share/opensearch/data'
关键配置说明:
-
镜像版本:使用了OpenSearch 2.17.0版本,这是一个稳定且功能丰富的版本。
-
安全插件:通过
DISABLE_SECURITY_PLUGIN=true
禁用了安全插件,简化了开发环境的配置。 -
单节点模式:
discovery.type=single-node
配置使OpenSearch以单节点模式运行,适合开发和测试环境。 -
CORS配置:启用了跨域资源共享(CORS),并配置了允许的来源和头部信息,确保dejavu能够正常访问OpenSearch。
-
内存设置:
- 通过
bootstrap.memory_lock=true
锁定内存,提高性能 ES_JAVA_OPTS
设置了JVM堆内存为512MB
- 通过
-
数据持久化:将容器内的数据目录挂载到宿主机的
./data_os
目录,确保数据不会因容器重启而丢失。
Dejavu服务配置
dejavu:
image: appbaseio/dejavu:latest
container_name: dejavu
ports:
- '1358:1358'
links:
- opensearch
关键配置说明:
-
最新镜像:使用dejavu的最新稳定版本。
-
端口映射:将容器内的1358端口映射到宿主机的1358端口,用户可以通过
http://localhost:1358
访问dejavu界面。 -
服务链接:通过
links
配置确保dejavu容器能够访问opensearch容器。
部署步骤
-
创建一个新目录,将上述docker-compose.yml文件保存到该目录中。
-
打开终端,导航到该目录,运行以下命令启动服务:
docker-compose up -d
-
等待Docker下载镜像并启动容器。完成后,您可以通过以下方式访问服务:
- OpenSearch:
http://localhost:9200
- Dejavu:
http://localhost:1358
- OpenSearch:
-
在Dejavu界面中,连接OpenSearch时使用以下配置:
- URL:
http://opensearch:9200
- 其他认证信息保持为空(因为我们禁用了安全插件)
- URL:
常见问题解决
-
内存不足错误:
- 如果遇到内存不足的问题,可以调整
ES_JAVA_OPTS
的值,例如改为-Xms256m -Xmx256m
。
- 如果遇到内存不足的问题,可以调整
-
端口冲突:
- 如果9200或1358端口已被占用,可以修改docker-compose.yml中的端口映射配置,例如将
9200:9200
改为9201:9200
。
- 如果9200或1358端口已被占用,可以修改docker-compose.yml中的端口映射配置,例如将
-
数据持久化:
- 确保宿主机的
./data_os
目录有足够的写入权限。
- 确保宿主机的
最佳实践
-
生产环境配置:
- 在生产环境中,建议启用OpenSearch的安全插件并配置适当的认证信息。
-
资源限制:
- 可以根据实际需求调整容器的资源限制,如CPU和内存限制。
-
网络配置:
- 在生产环境中,建议使用自定义的Docker网络而不是默认的链接(links)方式。
总结
通过本文介绍的Docker Compose配置,您可以快速搭建一个包含OpenSearch搜索引擎和dejavu浏览器的完整开发环境。这种部署方式简单高效,特别适合开发人员快速搭建本地测试环境。对于生产环境,建议根据实际需求进行适当的调整和安全加固。