当前位置: 首页 > news >正文

stack-docker脚本全解析:setup.sh自动化部署背后的秘密

stack-docker脚本全解析:setup.sh自动化部署背后的秘密

【免费下载链接】stack-dockerProject no longer maintained.项目地址: https://gitcode.com/gh_mirrors/st/stack-docker

stack-docker是一个基于Docker Compose的开源项目,提供了Elastic Stack(Elasticsearch、Kibana、Logstash和Beats)的完整自动化部署解决方案。通过项目中的setup.sh脚本,用户可以轻松完成从环境配置到服务启动的全流程部署,无需手动进行复杂的配置工作。

一键部署的核心:setup.sh脚本解析

setup.sh是stack-docker项目的自动化部署核心,位于项目的scripts目录下。这个脚本通过简洁的命令序列,实现了从环境准备到服务配置的全自动化流程。

脚本执行流程概览

  1. 配置文件权限设置:脚本首先设置config目录的权限,确保容器能够正常读取配置文件:

    confdir="${PWD}/config" chown 1000 -R "$confdir" find "$confdir" -type f -name "*.keystore" -exec chmod go-wrx {} \; find "$confdir" -type f -name "*.yml" -exec chmod go-wrx {} \;
  2. 生成安全密码:自动生成随机的Elasticsearch管理员密码:

    PW=$(openssl rand -base64 16;) ELASTIC_PASSWORD="${ELASTIC_PASSWORD:-$PW}" export ELASTIC_PASSWORD
  3. 分阶段部署服务:通过Docker Compose依次启动Elasticsearch、Kibana、Logstash和各类Beats组件的初始化容器:

    docker-compose -f docker-compose.yml -f docker-compose.setup.yml up setup_elasticsearch docker-compose -f docker-compose.yml -f docker-compose.setup.yml up setup_kibana setup_logstash docker-compose -f docker-compose.yml -f docker-compose.setup.yml up setup_auditbeat setup_filebeat setup_heartbeat setup_metricbeat setup_packetbeat setup_apm_server

Docker Compose配置文件解析

stack-docker项目使用两个主要的Docker Compose配置文件来实现服务部署:

docker-compose.yml:核心服务定义

该文件定义了Elastic Stack的所有核心服务,包括:

  • Elasticsearch(端口9200)
  • Kibana(端口5601)
  • Logstash
  • 各类Beats(Auditbeat、Filebeat、Heartbeat、Metricbeat、Packetbeat)
  • APM Server(端口8200)

每个服务都配置了对应的容器名称、镜像版本、网络设置、数据卷挂载和健康检查机制。例如Elasticsearch服务的定义:

elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:${TAG} container_name: elasticsearch ports: ['9200:9200'] networks: ['stack'] volumes: - 'es_data:/usr/share/elasticsearch/data' healthcheck: test: curl --cacert /usr/share/elasticsearch/config/certs/ca/ca.crt -s https://localhost:9200 >/dev/null; if [[ $$? == 52 ]]; then echo 0; else echo 1; fi interval: 30s timeout: 10s retries: 5

docker-compose.setup.yml:初始化服务配置

该文件定义了专门用于初始化和配置各个组件的临时容器,如setup_elasticsearchsetup_kibana等。这些容器负责执行一次性的配置任务,如设置密码、创建索引模板、配置安全策略等。

以Kibana初始化容器为例:

setup_kibana: image: docker.elastic.co/kibana/kibana:${TAG} container_name: setup_kibana command: ['/bin/bash', '-c', 'cat /usr/local/bin/setup-kibana.sh | tr -d "\r" | bash'] environment: ['ELASTIC_PASSWORD=${ELASTIC_PASSWORD}'] volumes: - './config:/config' - './scripts/setup-kibana.sh:/usr/local/bin/setup-kibana.sh:ro' depends_on: ['elasticsearch'] networks: ['stack']

部署前的准备工作

在运行setup.sh脚本之前,建议进行以下准备工作:

1. 克隆项目仓库

首先需要将项目代码克隆到本地:

git clone https://gitcode.com/gh_mirrors/st/stack-docker cd stack-docker

2. 配置Docker资源

Elastic Stack对系统资源有一定要求,建议为Docker分配足够的内存和CPU资源。下图展示了Docker虚拟机的内存设置示例:

3. 检查环境变量

项目使用.env文件来管理环境变量,主要包括:

  • TAG:Elastic Stack组件的版本标签
  • ELASTIC_VERSION:Elastic Stack的版本号

可以根据需要修改这些变量来指定不同的版本。

执行部署与验证

运行setup.sh脚本

在项目根目录下执行以下命令启动自动化部署:

chmod +x scripts/setup.sh ./scripts/setup.sh

脚本执行完成后,会显示类似以下的成功信息:

Setup completed successfully. To start the stack please run: docker-compose up -d If you wish to remove the setup containers please run: docker-compose -f docker-compose.yml -f docker-compose.setup.yml down --remove-orphans You will have to re-start the stack after removing setup containers. Your 'elastic' user password is: xxxxxxxx

启动服务栈

执行以下命令启动所有服务:

docker-compose up -d

验证服务状态

可以通过以下命令检查各服务的运行状态:

docker-compose ps

也可以直接访问Kibana界面(默认地址:http://localhost:5601),使用脚本输出的elastic用户密码登录验证部署是否成功。

项目目录结构解析

stack-docker项目的主要目录结构如下:

  • config/:包含所有服务的配置文件,如elasticsearch.ymlkibana.yml
  • scripts/:包含自动化部署脚本,如setup.shsetup-elasticsearch.sh
  • screenshots/:包含项目相关的截图资源
  • docker-compose.yml:核心服务定义
  • docker-compose.setup.yml:初始化服务配置

总结

stack-docker项目通过setup.sh脚本和Docker Compose配置文件,实现了Elastic Stack的自动化部署。这种方式极大简化了复杂系统的部署流程,使开发人员和系统管理员能够快速搭建完整的日志收集、分析和可视化平台。无论是用于开发测试还是生产环境,stack-docker都提供了一种简单、可靠的部署方案。

通过本文的解析,相信您已经对stack-docker的自动化部署流程有了深入了解。如果您想进一步定制部署,可以修改相应的配置文件或脚本,以满足特定的业务需求。

【免费下载链接】stack-dockerProject no longer maintained.项目地址: https://gitcode.com/gh_mirrors/st/stack-docker

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/483784/

相关文章:

  • 终极指南:5分钟掌握http-server零配置静态服务器部署
  • AICore游戏AI开发库:从零构建智能游戏角色的终极指南
  • 探索practical-nlp-code:从入门到精通的自然语言处理实战指南
  • SenseVoice-small部署教程:低配VPS(1C2G)运行ONNX量化版可行性验证
  • 为什么选择sig-storage-local-static-provisioner?5大核心优势深度剖析
  • 回顾C语言
  • 文脉定序参数详解:rerank_threshold动态阈值过滤低置信度候选结果
  • 实时交互体验升级:InternLM-XComposer2.5-OmniLive双部署方案对比(SRS Server vs Gradio)
  • 终极指南:Fluent UI组件错误边界边缘情况的10个处理策略
  • VibeVoice Python调用实战:自定义脚本集成TTS功能教程
  • SpringBoot 脚手架搭建指南:从零构建企业级开发框架
  • periph库实战案例:使用Go语言开发树莓派硬件项目
  • USBMap常见问题解答:解决你的macOS USB端口映射困惑
  • Alpamayo-R1-10B保姆级教程:WebUI日志实时监控与常见报错代码速查表
  • qmd高级技巧:如何优化你的知识库索引策略与搜索精度
  • GTE+SeqGPT轻量化部署指南:560M参数模型在消费级GPU上的高效运行方案
  • CosyVoice2-0.5B多场景落地:乡村振兴广播站、社区防疫通知方言语音生成
  • Qwen3-ForcedAligner-0.6B部署案例:单卡A10/A40离线运行,数据不出域
  • marketingskills技能解析:10大营销场景的AI解决方案
  • python-mss高级技巧:如何捕获多个显示器和指定区域
  • 如何从零开始探索genai-llm-ml-case-studies:初学者必知的10个核心功能
  • 亚洲美女LoRA风格迁移边界测试:造相-Z-Image-Turbo对极端提示的鲁棒性
  • Monitorix高级配置:告警设置与性能优化的10个实用技巧
  • DarkForest与Pachi引擎对比:谁才是围棋AI领域的王者?
  • IPED云取证数据保留策略案例:设置保留期限的实用指南
  • 造相 Z-Image 基础教程:正向提示词输入规范+负向过滤技巧(附示例)
  • 签到盒Checkbox核心原理揭秘:JavaScript自动化签到技术详解
  • 55KB超轻量!Vanilla-Todo项目解析:原生HTML/CSS/JS的极致优化
  • Alpamayo-R1-10B效果实测:在100个长尾场景(动物横穿、鬼探头)中,安全规避率达91.7%
  • DSWaveformImage高级扩展:自定义波形渲染器开发指南