通过docker-compose.yml启动Elasticsearch

1、编写docker-compose.yml文件

version: '3.7'
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
    container_name: my.es
    restart: always
    environment:
      - cluster.name=my.es
      - "discovery.type=single-node"
    volumes:
      - ./data:/usr/share/elasticsearch/data
      - ./config:/usr/share/elasticsearch/config
    ports:
      - 9200:9200
      - 9300:9300

2、创建data、config宿主机映射目录,权限777。

3、config目录下新建配置文件

  • jvm.options
-Xmx4g
  • elasticsearch.yml
cluster.name: my.es
network.host: 0.0.0.0
node.name: es01

path.data: /usr/share/elasticsearch/data 
path.logs: /usr/share/elasticsearch/data
  • log4j2.properties
######## Server JSON ############################
appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
appender.rolling.layout.type = ESJsonLayout
appender.rolling.layout.type_name = server
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 256MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB
################################################
rootLogger.level = info
rootLogger.appenderRef.rolling.ref = rolling

注:log4j2.properties文件中,“值”后面跟空格,启动时报错。

4、启动

docker-compose up -d

 

参考资料:

Install Elasticsearch with Docker

在 WSL(Windows Subsystem for Linux)环境下使用 `docker-compose.yml` 文件进行服务部署,需要注意 WSL 的文件系统结构、权限管理以及与 Docker 的兼容性。以下是一个完整的配置指南,适用于 WSL 环境下的服务部署。 ### 服务配置示例 以下是一个适用于 WSL 环境的 `docker-compose.yml` 示例文件,包含 Nginx 和 Elasticsearch 服务的配置: ```yaml version: "3.9" services: web: image: nginx:latest ports: - "80:80" volumes: - ./app:/var/www/html restart: unless-stopped elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.3 environment: - discovery.type=single-node - ES_JAVA_OPTS=-Xms512m -Xmx512m ports: - "9200:9200" - "9300:9300" volumes: - ./elasticsearch_data:/usr/share/elasticsearch restart: unless-stopped ``` ### 配置说明 - **Nginx 服务**: - 映射本地 `./app` 目录到容器中的 `/var/www/html`,适用于静态网站部署。 - 端口映射为 `80:80`,确保外部访问正常。 - 使用 `restart: unless-stopped` 确保容器在系统重启后自动启动- **Elasticsearch 服务**: - 使用官方镜像 `docker.elastic.co/elasticsearch/elasticsearch:7.17.3`。 - 设置单节点模式 `discovery.type=single-node`。 - 限制 JVM 内存使用 `ES_JAVA_OPTS=-Xms512m -Xmx512m`,避免内存溢出。 - 数据持久化路径为 `./elasticsearch_data`,映射到容器内的 `/usr/share/elasticsearch`。 - 使用 `restart: unless-stopped` 确保容器在系统重启后自动启动。 ### 权限问题处理 Elasticsearch 容器在 WSL 环境中可能会遇到权限问题,尤其是在挂载目录时。可以按照以下方式处理: 1. **创建本地目录并赋予权限**: ```bash mkdir -p ./elasticsearch_data chmod -R 777 ./elasticsearch_data ``` 2. **进入容器修改权限**(可选): 如果容器启动失败,可尝试进入容器内部修改权限: ```bash docker-compose exec elasticsearch /bin/bash chown -R 1000:0 /usr/share/elasticsearch ``` ### 常用命令 - **后台启动服务**: ```bash docker-compose up -d ``` - **查看运行状态**: ```bash docker-compose ps ``` - **查看日志**: ```bash docker-compose logs ``` - **停止服务**: ```bash docker-compose stop ``` - **停止并删除容器**: ```bash docker-compose down ``` - **进入容器执行命令**: ```bash docker-compose exec web bash ``` ### 注意事项 - WSL 环境下文件路径应使用 Linux 风格(例如 `./app` 而不是 `C:\app`)。 - Elasticsearch 镜像需要较多内存资源,建议在 WSL2 中运行,并确保系统资源充足。 - 如果遇到权限问题,确保宿主机目录权限与容器内用户 UID 匹配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值