-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
增加ElasticSearch的Docker-compose.yaml配置,方便快速部署相关服务
- Loading branch information
Showing
2 changed files
with
158 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# elastic账号的密码 (至少六个字符) | ||
ELASTIC_PASSWORD=123456 | ||
|
||
# kibana_system账号的密码 (至少六个字符),该账号仅用于一些kibana的内部设置,不能用来查询es | ||
KIBANA_PASSWORD=abcdef | ||
|
||
# es和kibana的版本 | ||
STACK_VERSION=8.2.2 | ||
|
||
# 集群名字 | ||
CLUSTER_NAME=docker-cluster | ||
|
||
# x-pack安全设置,这里选择basic,基础设置,如果选择了trail,则会在30天后到期 | ||
LICENSE=basic | ||
#LICENSE=trial | ||
|
||
# es映射到宿主机的的端口 | ||
ES_PORT=9200 | ||
|
||
# kibana映射到宿主机的的端口 | ||
KIBANA_PORT=5601 | ||
|
||
# es容器的内存大小,请根据自己硬件情况调整 | ||
MEM_LIMIT=1073741824 | ||
|
||
# 命名空间,会体现在容器名的前缀上 | ||
COMPOSE_PROJECT_NAME=elasticsearch |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
version: "2.2" | ||
|
||
services: | ||
setup: | ||
image: elasticsearch:${STACK_VERSION} | ||
volumes: | ||
- certs:/usr/share/elasticsearch/config/certs | ||
user: "0" | ||
command: > | ||
bash -c ' | ||
if [ x${ELASTIC_PASSWORD} == x ]; then | ||
echo "Set the ELASTIC_PASSWORD environment variable in the .env file"; | ||
exit 1; | ||
elif [ x${KIBANA_PASSWORD} == x ]; then | ||
echo "Set the KIBANA_PASSWORD environment variable in the .env file"; | ||
exit 1; | ||
fi; | ||
if [ ! -f config/certs/ca.zip ]; then | ||
echo "Creating CA"; | ||
bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip; | ||
unzip config/certs/ca.zip -d config/certs; | ||
fi; | ||
if [ ! -f config/certs/certs.zip ]; then | ||
echo "Creating certs"; | ||
echo -ne \ | ||
"instances:\n"\ | ||
" - name: es01\n"\ | ||
" dns:\n"\ | ||
" - es01\n"\ | ||
" - localhost\n"\ | ||
" ip:\n"\ | ||
" - 127.0.0.1\n"\ | ||
> config/certs/instances.yml; | ||
bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key; | ||
unzip config/certs/certs.zip -d config/certs; | ||
fi; | ||
echo "Setting file permissions" | ||
chown -R root:root config/certs; | ||
find . -type d -exec chmod 750 \{\} \;; | ||
find . -type f -exec chmod 640 \{\} \;; | ||
echo "Waiting for Elasticsearch availability"; | ||
until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 90; done; | ||
echo "Installing IK Analyzer plugin"; | ||
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-7.10.0.zip; | ||
echo "Setting kibana_system password"; | ||
until curl -s -X POST --cacert config/certs/ca/ca.crt -u elastic:${ELASTIC_PASSWORD} -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done; | ||
echo "All done!"; | ||
' | ||
healthcheck: | ||
test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"] | ||
interval: 1s | ||
timeout: 5s | ||
retries: 120 | ||
|
||
es01: | ||
depends_on: | ||
setup: | ||
condition: service_healthy | ||
image: elasticsearch:${STACK_VERSION} | ||
volumes: | ||
- certs:/usr/share/elasticsearch/config/certs | ||
- esdata:/usr/share/elasticsearch/data | ||
ports: | ||
- ${ES_PORT}:9200 | ||
environment: | ||
- node.name=es01 | ||
- cluster.name=${CLUSTER_NAME} | ||
- bootstrap.memory_lock=true | ||
- xpack.security.enabled=true | ||
- xpack.security.http.ssl.enabled=true | ||
- xpack.security.http.ssl.key=certs/es01/es01.key | ||
- xpack.security.http.ssl.certificate=certs/es01/es01.crt | ||
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt | ||
- xpack.security.http.ssl.verification_mode=certificate | ||
- xpack.security.transport.ssl.enabled=true | ||
- xpack.security.transport.ssl.key=certs/es01/es01.key | ||
- xpack.security.transport.ssl.certificate=certs/es01/es01.crt | ||
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt | ||
- xpack.security.transport.ssl.verification_mode=certificate | ||
- xpack.license.self_generated.type=${LICENSE} | ||
- discovery.seed_hosts=es01 | ||
- cluster.initial_master_nodes=es01 | ||
mem_limit: ${MEM_LIMIT} | ||
ulimits: | ||
memlock: | ||
soft: -1 | ||
hard: -1 | ||
healthcheck: | ||
test: | ||
[ | ||
"CMD-SHELL", | ||
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'", | ||
] | ||
interval: 10s | ||
timeout: 10s | ||
retries: 120 | ||
|
||
kibana: | ||
depends_on: | ||
es01: | ||
condition: service_healthy | ||
image: kibana:${STACK_VERSION} | ||
volumes: | ||
- certs:/usr/share/kibana/config/certs | ||
- kibanadata:/usr/share/kibana/data | ||
ports: | ||
- ${KIBANA_PORT}:5601 | ||
environment: | ||
- SERVERNAME=kibana | ||
- ELASTICSEARCH_HOSTS=https://es01:9200 | ||
- ELASTICSEARCH_USERNAME=kibana_system | ||
- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD} | ||
- ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt | ||
mem_limit: ${MEM_LIMIT} | ||
healthcheck: | ||
test: | ||
[ | ||
"CMD-SHELL", | ||
"curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'", | ||
] | ||
interval: 10s | ||
timeout: 10s | ||
retries: 120 | ||
|
||
volumes: | ||
certs: | ||
driver: local | ||
esdata: | ||
driver: local | ||
kibanadata: | ||
driver: local |