Docker 自动化部署(保姆级教程)

本文详细介绍了如何使用Docker和Jenkins进行自动化部署,包括Jenkins的安装、基于Docker镜像启动、配置版本库、插件安装、创建任务、构建触发器设置、打包和部署到服务器的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. jenkins 介绍

1.1 参考链接:

jenkins介绍

jenkins部署Vue项目

docker安装Jenkins

1.2 jenkins 概述

Jenkins:是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。

1.3 jenkins部署项目的流程

开发的步骤:

  1. 开发者会将代码上传到版本库中。
  2. jenkins通过配置版本库的连接地址,获取到源代码。
  3. jenkins获取到源代码之后通过参数化构建(或者触发器)开始编译打包。
  4. jenkins通过调用maven(Ant或者Gradle)命令实现编译打包过程。
  5. 生成的war包通过ssh插件上传到远程tomcat服务器中通过shell脚本自动发布项目。

在这里插入图片描述

2. jenkins 安装

2.1 基于docker 镜像

服务:jenkins/jenkins 、 jenkins/blueocean
我们采用 docker pull jenkins/jenkins

2.2 启动 jenkins 后端服务

docker run -id -u root --name my_jenkins -p 8085:8080  -p 50000:50000 jenkins/jenkins
# -u root  root用户权限去启动系统
# -p 8085:8080  端口映射
# --name my_jenkins #容器的名字

8085 防火墙需要开启:
在这里插入图片描述

2.3 登录 jenkins 服务后端

2.3.1 访问 8085 服务进入jenkins后端:
在这里插入图片描述
2.3.2 进入容器:

docker exec -it my_jenkins bash  

示例:
在这里插入图片描述

2.3.3 在jenkins容器内部进行获取密码:

cat /var/jenkins_home/secrets/initialAdminPassword

示例:
在这里插入图片描述

将密码填入jenkins服务即可登录成功。

2.3.4 选择推荐安装的插件:

没有安装成功也没有问题,后续更新即可

在这里插入图片描述
等待:
在这里插入图片描述
2.3.5 登录 jenkins
没有账号的可以在这里创建登录
在这里插入图片描述
因为我有帐号了,就选择使用admin账号登录
这便来到了jenkins后台首页
在这里插入图片描述

3. jenkins自动化部署开始

3.1 下载需要的插件

  • Nodejs
  • Git
  • Gitee
  • Publish Over SSH
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.2 创建任务

在这里插入图片描述
在这里插入图片描述
跳转到项目配置页面

3.2.1 描述

在这里插入图片描述

3.2.2 配置远程仓库地址链接(从远程仓库拉代码)

第一个空是需要填写远程地址链接

在这里插入图片描述

第二个填写用户,如果没有用户点击下面添加用户

在这里插入图片描述
目前该项目的工作空间什么都没有:
在这里插入图片描述
我们点击立即构建:
在这里插入图片描述

3.2.3 配置构建触发器

在这里插入图片描述
gitee中配置webHooks:
在这里插入图片描述
这里填写的url是:
在这里插入图片描述
密码是:
在这里插入图片描述

3.2.4 配置全局node环境

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我选择14的node版本(16和18不建议)
在这里插入图片描述

3.2.5 在项目配置中配置 构建环境

在这里插入图片描述
在这里插入图片描述

3.2.6 配置 build steps (打包)

在这里插入图片描述
在控制台输入打包命令:
在这里插入图片描述
即可实现打包工作
在这里插入图片描述

3.3 系统配置

在这里插入图片描述
在这里插入图片描述
Publish Over SSH 在最下面
新增服务
在这里插入图片描述

参数说明:
第一个参数:名称 最好不好用中文
第二个参数:服务器公网ip
第三个参数:用户
第四个参数:打包上传目录

在高级里面添加服务器密码
在这里插入图片描述

3.4 构建后操作(将打包后的代码推到服务器上)

在这里插入图片描述
在这里插入图片描述
此时,服务器该位置已经出现了打包后的dist:
在这里插入图片描述

3.5 docker启动项目容器

docker run --name jenkinsProject -p 9001:80 -v 
/home/www/frontProject/jenkinsProject/dist:/usr/share/nginx/html -v 
/home/www/nginxConf/nginx.conf:/etc/nginx/nginx.conf -v 
/home/www/nginxConf/conf.d:/etc/nginx/conf.d --restart=always -d nginx:latest

最后成功上线
在这里插入图片描述

4 演示自动化效果

docker自动化部署

<think>好的,我现在需要处理用户关于ITSM自动化运维平台搭建的保姆教程请求。首先,回顾之前的对话历史,用户之前询问了自动生成工单的运维软件部署,我给出了详细的指南,包括工具选型、部署架构、流程、安全措施等。现在用户进一步要求更全面的ITSM平台搭建教程,可能需要涵盖更广泛的内容,比如IT服务管理的各个方面,而不仅仅是工单生成。 用户可能希望得到一个从零开始的详细步骤,适合没有太多经验的人跟随操作。考虑到用户之前的问题,他们可能对开源的工具有兴趣,比如Zammad、Zabbix等,所以教程可能需要推荐开源或免费的工具,同时可能涉及企业解决方案。 我需要确定用户的使用场景,可能是企业内部的运维团队,或者是中小型公司希望自动化他们的IT服务管理流程。用户可能是IT运维人员、系统管理员或技术负责人,需要搭建一个完整的ITSM平台,包括事件管理、变更管理、资产管理等模块。 用户的真实需求不仅仅是步骤,还包括最佳实践、常见问题解决和优化建议。他们可能需要详细的配置示例、代码片段、架构图以及如何整合不同工具。此外,用户可能对成本、安全性和扩展性有顾虑,所以教程需要涵盖这些方面。 接下来,我需要组织一个结构清晰的保姆教程,分步骤讲解,确保每个环节都有详细的操作指南。可能的结构包括:环境准备、核心组件安装、基础配置、自动化规则设置、与其他系统集成、安全加固、维护优化等。需要包含具体的命令、配置文件示例、流程图以及验证方法。 同时,要考虑到用户可能遇到的问题,比如依赖项安装失败、服务无法启动、API接口不通等,提供排查步骤和解决方案。此外,可能需要比较不同工具的优势和适用场景,帮助用户根据自身情况选择。 另外,用户之前得到的内容中使用了Mermaid图表和数学公式,这次可能需要延续这种风格,但要注意是否符合他们的Markdown渲染环境。如果用户无法显示Mermaid,可能需要改用其他方式呈现架构图,比如文本图表或图片链接。 最后,确保语言简洁明了,步骤详细但不过于冗长,关键配置和代码突出显示,方便用户复制粘贴。同时,提供参考资料和进一步学习的资源,帮助用户深入理解。</think>--- ### ITSM自动化运维平台搭建保姆教程 --- #### 一、环境准备(以CentOS 7为例) **1. 基础要求** ```bash # 验证系统环境 $ cat /etc/redhat-release # 确认系统版本 $ free -h # 内存≥4GB $ df -h / # 磁盘≥50GB ``` **2. 依赖安装** ```bash # 安装基础工具链 sudo yum install -y epel-release sudo yum install -y docker git python3-pip nginx sudo systemctl start docker && sudo systemctl enable docker ``` --- #### 二、核心组件部署 **1. 服务台系统(ITSM核心)** ```bash # 使用iTop社区版(开源) docker run -d --name itop \ -p 8080:80 \ -v itop-data:/var/www/html \ -e MYSQL_ROOT_PASSWORD=your_password \ combodo/itop:latest ``` **验证安装**:访问 `http://服务器IP:8080`,完成初始化配置 **2. 监控系统(Prometheus+Grafana)** ```yaml # docker-compose.yml version: '3' services: prometheus: image: prom/prometheus ports: - "9090:9090" grafana: image: grafana/grafana ports: - "3000:3000" ``` ```bash $ docker-compose up -d ``` **3. 自动化引擎(Ansible Tower)** ```bash # 使用官方安装包 wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz tar xvf ansible-tower-setup-latest.tar.gz cd ansible-tower-setup-*/ # 修改inventory文件后执行 $ sudo ./setup.sh ``` --- #### 三、基础配置流程 **1. 服务目录配置** ```sql -- 创建服务目录表 CREATE TABLE service_catalog ( id INT PRIMARY KEY AUTO_INCREMENT, service_name VARCHAR(50) NOT NULL, sla_level ENUM('黄金', '白银', '青铜') DEFAULT '青铜', owner_team VARCHAR(30) ); INSERT INTO service_catalog VALUES (1, '服务器运维', '黄金', '基础架构组'), (2, '应用支持', '白银', '应用运维组'); ``` **2. 工单流程设计** ```mermaid $$ \begin{array}{cccccc} \text{新建} & \rightarrow & \text{处理中} & \rightarrow & \text{待验证} & \rightarrow & \text{已解决} \\ \uparrow & & \downarrow_{\text{需补充}} & & \downarrow_{\text{驳回}} \\ \text{已关闭} & \leftarrow & \text{复核通过} & \leftarrow & \text{验证中} \\ \end{array} $$ ``` **3. 服务别协议(SLA)** $$ \text{响应时间} = \begin{cases} 15\text{分钟} & \text{黄金} \\ 1\text{小时} & \text{白银} \\ 4\text{小时} & \text{青铜} \end{cases} $$ --- #### 四、自动化集成配置 **1. 告警自动生成工单(Prometheus → iTop)** ```yaml # prometheus告警规则示例 groups: - name: host-alert rules: - alert: HighCPUUsage expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: critical annotations: description: 'CPU使用率超过80%: {{ $value }}%' ``` **2. 自动化处理配置(iTop → Ansible)** ```python # iTop webhook处理脚本示例 import requests from flask import Flask, request app = Flask(__name__) @app.route('/webhook', methods=['POST']) def handle_webhook(): data = request.json if data['priority'] == '紧急': requests.post('https://ansible/api/v2/job_templates/7/launch/', headers={'Authorization': 'Bearer your_token'}, json={"extra_vars": {"host": data['host']}}) return 'Received', 200 ``` --- #### 五、权限管理体系 **1. RBAC角色配置** ```yaml # 角色权限矩阵示例 roles: - name: 运维工程师 permissions: - ticket_create - ticket_edit - server_restart - name: 服务台人员 permissions: - ticket_view - ticket_assign ``` **2. LDAP集成(对接AD域)** ```properties # iTop配置文件修改 'allowed_login_types' => 'form,external', 'auth_remote' => true, 'auth_remote_user_autologin' => true, 'auth_remote_header_name' => 'AUTH_USER', ``` --- #### 六、数据可视化配置 **1. Grafana仪表盘示例** ```sql -- SLA达成率计算公式 SELECT (COUNT(CASE WHEN resolved_time <= sla_due THEN 1 END) * 100.0) / COUNT(*) FROM tickets WHERE create_time BETWEEN '${__from:date}' AND '${__to:date}' ``` **2. 资源利用率看板** $$ \text{健康度评分} = 0.4 \times \text{CPU使用率} + 0.3 \times \text{内存使用率} + 0.3 \times \text{磁盘使用率} $$ --- #### 七、灾备方案设计 **1. 数据库主从同步** ```bash # MySQL主库配置 [mysqld] server-id=1 log-bin=mysql-bin # 从库配置 [mysqld] server-id=2 relay-log=mysql-relay-bin read-only=1 ``` **2. 定时备份脚本** ```bash #!/bin/bash mysqldump -u root -p$DB_PASS itop | gzip > /backup/itop_$(date +%F).sql.gz find /backup -name "*.sql.gz" -mtime +30 -delete ``` --- #### 八、常见问题排查指南 | 问题现象 | 排查命令 | 解决方案 | |---------|----------|----------| | 服务无法启动 | `journalctl -u docker --since "5 minutes ago"` | 检查端口冲突或存储卷权限 | | API调用失败 | `tcpdump -i eth0 port 443 -w api.pcap` | 检查SSL证书和防火墙规则 | | 工单同步延迟 | `show processlist;` | 优化数据库索引:<br>`CREATE INDEX idx_ticket_status ON tickets(status)` | --- #### 九、优化建议 1. **自动化实施**: $$ \text{成熟度模型} = \begin{cases} \text{Level1: 手工处理} \\ \text{Level2: 条件触发} \\ \text{Level3: AI预测} \end{cases} $$ 2. **容量规划公式**: $$ \text{所需人力} = \frac{\text{日均工单量} \times \text{平均处理时长}}{8\text{小时}} \times 1.2 $$ --- #### 十、学习资源推荐 1. **官方文档**: - [iTop配置手册](https://www.itophub.io) - [Ansible Tower API指南](https://docs.ansible.com) 2. **书籍推荐**: - 《IT服务管理标准指南(ITIL 4)》 - 《自动化运维:从零构建企业平台》 --- 通过以上步骤可实现从零搭建完整的ITSM自动化运维平台。建议按以下阶段推进: 1. **基础搭建**:完成核心组件安装(1-2天) 2. **流程验证**:测试工单全生命周期流转(3-5天) 3. **自动化扩展**:逐步添加智能分析模块(持续迭代) 部署过程中如遇问题,可优先检查各组件日志文件(路径参考): - iTop日志:`/var/www/html/log/error.log` - Prometheus日志:`docker logs prometheus`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值