配置文件和docker-compose.yml在同级目录,docker-compose.yml会自动读取配置文件
启动命令
启动容器 -d 守护方式启动
docker compose up
停止容器 不删除
docker compose stop
停止后删除容器 慎用
docker compose down
- 配置文件 .env
# docker-compose.yml的配置文件,(全局变量)
# ES版本,与ik分词器和kibana版本一致
ES_VERSION=8.19.6
# ES本机端口映射
ES_PORT=9200
# ES本地数据目录,要有读写权限,否则es无法运行
ES_DATA_PATH=./es_data
- docker-compose.yml
# 网络
networks:
es-network:
name: es-network
driver: bridge
services:
elasticsearch:
image: elasticsearch:${ES_VERSION}
container_name: es01
restart: always
ports:
# ES本机端口映射
- "${ES_PORT}:9200"
environment:
# 单节点
- discovery.type=single-node
# 关闭安全认证
- xpack.security.enabled=false
# 关闭ssl
- xpack.security.http.ssl.enabled=false
# 避免内存不足问题 官方建议 Xms(初始堆内存大小)和 Xmx(最大堆内存大小)设为相同值(避免 JVM 动态调整内存大小的开销),且总大小不超过物理内存的 50%
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
deploy:
resources:
limits: # 硬限制
cpus: '2'
memory: 512m
reservations: # 软限制
cpus: '1'
memory: 256m
volumes:
# 数据卷 ES本地数据目录,要有读写权限,否则es无法运行
- ${ES_DATA_PATH}:/usr/share/elasticsearch/data
networks:
- es-network
entrypoint: [
# [ 'elasticsearch' ]
# 用 sh 执行命令"字符串",单引号内的字符串,换行不需要\ 否则命令会报错
# 1.设置环境变量
# 2.安装分词插件
# 3.启动ES
"/bin/bash", "-c",
'export ES_HOME=/usr/share/elasticsearch;
if ! elasticsearch-plugin list | grep -q "analysis-ik"; then
echo "ik分词器 安装中...";
elasticsearch-plugin install -b https://get.infini.cloud/elasticsearch/analysis-ik/${ES_VERSION};
echo "ik分词器 安装成功";
else
echo "ik分词器 已安装";
fi;
echo "ES 开始启动...";
exec elasticsearch'
]
kibana:
image: kibana:${ES_VERSION}
container_name: kibana01
restart: always
ports:
- "5601:5601"
environment:
# 连接ES服务名
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
# 中文
- I18N_LOCALE=zh-CN
# 可访问主机
- SERVER_HOST=0.0.0.0
deploy:
resources:
limits: # 硬限制
cpus: '1.5'
memory: 256m
reservations: # 软限制
cpus: '0.5'
memory: 128m
networks:
- es-network
depends_on:
# 确保ES启动后再启动Kibana
- elasticsearch