Day04-jenkins-docker

Day04-jenkins-docker

  • 9. 案例06: 基于docker的案例实现静态代码
    • 9.1 整体流程
    • 9.2 步骤与环境
      • 1) 步骤
      • 2) 环境
    • 9.3 详细步骤
      • 1)代码准备
      • 2)书写dockerfile
      • 3)准备私有仓库
      • 4)创建jenkins任务
      • 5)web节点上启动对应的docker容器

9. 案例06: 基于docker的案例实现静态代码

9.1 整体流程

image-20240522155929879

9.2 步骤与环境

1) 步骤

  • 代码,上传到gitlab

  • 书写测试dockerfile(只需要代码+docker环境即可)

  • jenkins创建任务

    • 拉取代码
    • 执行构建shell命令
      • jk:docker build
      • jk:docker push
      • web:docker run + 私有仓库镜像
  • 检查结果

2) 环境

角色主机ip
gitlab/giteedevops-oldboy-gitlab10.0.0.71/172.16.1.71
jenkinsdevops-oldboy-jenkins10.0.0.72/172.16.1.72
web服务器web0510.0.0.11/172.16.1.11
web服务器web0610.0.0.12/172.16.1.12
负载均衡lb01+lb0210.0.0.5/172.16.1.5

9.3 详细步骤

1)代码准备

在这里插入图片描述

  • 上传代码
git init 
git remote add origin git@gitlab.oldboylinux.cn:root/docker_bird_oldboy.git
git add .
git commit  -m "刚刚写的代码"
git tag -a v1.0 -m "新建了一个标签"
git push -u origin master
git push -u origin --tags

2)书写dockerfile

  • jenkins机器安装与启动docker
  • 发送bird代码到jenkins的/app/code/bird/下面
  • 准备开始书写dockerfile
cat Dockerfile
FROM nginx:1.22-alpine
LABEL author=lidao996 url=oldboyedu.com version=v1.0COPY . /usr/share/nginx/html/EXPOSE 80
#CMD 可以忽略,因为nginx镜像已有自动运行nginx服务的CMD了.docker build -t web:ngx_bird_v1.0 .
docker run -d --name "ngx_bird_v1.0" -p 8848:80 --rm web:ngx_bird_v1.0
#--rm测试时候可以加上,如果不确定镜像稳定性可以不加上加上--restart=always.注意--restart和--rm冲突,二选一.

未来实际项目中:

前端代码一般需要编译(npm,cnpm,yarn),生成到指定的目录target/dist/…

通过dockefile COPY dist/* /usr/share/nginx/html/

3)准备私有仓库

  • registry(docker02)启动docker私有仓库.
docker run -d --name "oldboy_registry" -p 5000:5000 -v registry:/var/lib/registry --restart=always registry:latest
  • jenkins配置通过http方式访问私有仓库
[root@devops-oldboy-jenkins /app/code/bird]# cat /etc/docker/daemon.json 
{"registry-mirrors": ["https://bjjtv7cs.mirror.aliyuncs.com"],"insecure-registries": ["http://reg.oldboylinux.cn:5000"]
}
  • 搭建完成私有仓库
docker build -t reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_v2.0 . 
#docker login -uxxx -pxxx 
docker push reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_v2.0

4)创建jenkins任务

image-20240523085056097

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

image-20240523085309593

在这里插入图片描述

#0.判断git_tag是否为默认
if [ "$git_tag" = "origin/master" ];thengit_tag=latest
fi
#1. 构建镜像
docker build -t reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag} .
#2. 推送到私有仓库
#docker login -uxxx -pxxx   私有仓库地址
docker push reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag}
#3. 部署web服务器

5)web节点上启动对应的docker容器

密钥认证

拉取镜像

启动容器

#vars
web_servers="172.16.1.82"
#0.判断git_tag是否为默认
if [ "$git_tag" = "origin/master" ];thengit_tag=latest
fi
#1. 构建镜像
docker build -t reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag} .
#2. 推送到私有仓库
#docker login -uxxx -pxxx   私有仓库地址
docker push reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag}#3. 部署web服务器
for ip in ${web_servers}
dossh root@${ip} "
#0.未来可以加入判断判断端口是否占用
#端口冲突手动解决.未来可以ansible实现.
#if [ `docker ps |grep -w 80 |wc -l` -eq 1 ];then#删除占用80端口的容器
#   fi
docker ps |grep -w 80 |awk '{print $NF}'|xargs docker rm -f
#0.未来可以加入判断判断容器的名字是否有冲突.
if [ `docker ps -a |grep -w "ngx_bird_${git_tag}" |wc -l ` -eq 1 ];thendocker rm -f ngx_bird_${git_tag}
fi
#启动
docker run -d --name "ngx_bird_${git_tag}" \
-p 80:80 --restart=always \
reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag}"
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息打点web篇---前端js打点

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理前端js代码的打点思路 本文只为学习安全使用,切勿用于非法用途。 一切未授权的渗透行为都是违法的。 前端js打点概念与目的 javascript文件属于前端语言,也就是说他的代码都…

taoCMS v3.0.2 文件上传漏洞(CVE-2022-23880)

前言 CVE-2022-23880是一个影响taoCMS v3.0.2的任意文件上传漏洞。攻击者可以利用此漏洞通过上传特制的PHP文件在受影响的系统上执行任意代码。 漏洞细节 描述: 在taoCMS v3.0.2的文件管理模块中存在任意文件上传漏洞。攻击者可以通过上传恶意的PHP文件来执行任意代码。 影响…

谷粒商城笔记-03-分布式基础概念

文章目录 一,微服务二,集群、分布式三,远程调用四,负载均衡五,服务注册、服务发现、注册中心六,配置中心七,服务熔断、服务降级1,服务熔断2,服务降级3,区别 八…

window自带的远程桌面设置凭证

原视频地址:https://www.bilibili.com/video/BV1YW4y1z7Du/?spm_id_from333.337.search-card.all.click&vd_sourceaeb69151d5ba645d3942f9f19bd6822a 我只是根据原视频做笔记 1、确认你是windows专业版 2、进入电脑->属性 3、取消勾选 4、进入电脑->管…

<Linux> 多线程

文章目录 线程线程互斥锁死锁 线程同步生产者消费者模型POSIX信号量基于环形队列的生产消费模型 线程池 线程 线程是进程内部可以独立运行的最小单位 进程是资源分配的基本单位,线程是调度器调度的基本单位 线程在进程的地址空间内运行 进程内的大部分资源线程是…

苹果电脑内存满了怎么清理空间垃圾 苹果电脑内存不足怎么办 MacBook优化储存空间

在日常使用苹果电脑过程中,某些用户可能经常会遇到存储空间不足的问题,尤其是当硬盘存储了大量的文件。这不仅影响电脑的运行速度,还可能导致应用程序运行不稳定。 一、节省 MacBook Pro 的空间 苹果电脑的操作系统(macOS&#x…

大模型学习笔记3【大模型】LLaMA学习笔记

文章目录 学习内容LLaMALLaMA模型结构LLaMA下载和使用好用的开源项目[Chinese-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)Chinese-Alpaca使用量化评估 学习内容 完整学习LLaMA LLaMA 2023年2月,由FaceBook公开了LLaMA,包含7B&#xff0…

springboot @configuration注解的配置, @bean注解方法a, 在@bean注解 getb(){}需要注入a

深度解析Configuration注解 aop和cglib import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class AppConfig {/** cglib重写方法 /Beanpublic A a() {return new A();}/** cglib重写方…

【C++】C++ 值传递,引用传递,指针传递之间的区别

在C中,函数参数的传递方式主要有三种:值传递、引用传递和指针传递。下面我会分别解释这三种方式的区别: 值传递(Pass by Value): 值传递是将实际参数的值复制给函数的形式参数。这意味着函数接收的是原始数据的一个副本…

好用的便签怎么把重要的事项单独窗口显示?

在日常的工作和生活中,便签就像是我身边的小助手,随时记录着琐碎的事项,提醒我别忘了重要的任务。想象一下,早晨一到办公室,打开电脑,桌面上密密麻麻的便签就像一张张待办事项的清单,它们或提醒…

【Python】判断Python版本sys.version_info介绍

一.Python中的sys.version_info参数介绍 sys.version_info是python中sys库中的一个函数,用于判断当前使用的python版本,默认同环境变量配置好的python版本一致。 sys.version_info中有主要几个参数,这里版本号就是第一个参数major&#xff…

JAVA 快递100wms工具类

快递wms工具类 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.kuaidi100.sdk.api.QueryTrack; import com.kuaidi100.sdk.api.Subscribe; import com.kuaidi100.sdk.contant.ApiInfoConstant; import c…

go开源webssh终端源码main.go分析

1.地址: https://github.com/Jrohy/webssh.git 2.添加中文注释地址: https://github.com/tonyimax/webssh_cn.git main.go分析 主包名:main package main //主包名 依赖包加载 //导入依赖包 import ("embed" //可执行文件…

为什么从Java程序粘贴数值到Excel 2024会变为两行?

问题描述 在从Java程序中粘贴一个数值到Excel 2024时,该数值会自动分成两行显示,而在Excel 2021中不会出现这个问题。 可能原因 这个问题可能是由于以下几个原因导致的: 换行符问题: Java程序在输出数据时可能包含了换行符&…

中英双语介绍美国的州:内布拉斯加州(Nebraska)

中文版 内布拉斯加州(Nebraska)位于美国中部,以其广阔的平原、农业生产和丰富的历史遗产而闻名。以下是对内布拉斯加州的详细介绍,包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 内布拉斯加州东临爱荷华州和密…

解决js对象解构赋值多行格式被prettier格式化为一行的问题

目前没有特别好的解决方法,但是有一个hack方法,就是在第一个解构参数后面加个空注释,骗过prettier。 代码示例如下: const {prop1, //prop2,prop3, } props 欢迎关注公众号:清晰编程,获取更多精彩内容

方向导数和梯度

方向导数和梯度 1 导数的回忆2 偏导数及其向量形式偏导数的几何意义偏导数的向量形式 3 方向导数向量形式几何意义方向导数和偏导的关系 4 梯度5 梯度下降算法 1 导数的回忆 导数的几何意义如图所示: 当 P 0 P_{0} P0​点不断接近 P P P时,导数如下定义…

springboot私人诊所管理系统-计算机毕业设计源码93887

摘要 随着科技的不断发展和医疗服务的日益普及,私人诊所管理系统成为现代医疗管理的重要组成部分。该系统通过引入计算机技术和互联网平台,为患者提供方便快捷的就诊方式,同时也为诊所、医院提供高效的资源管理和服务优化的途径。本文将介绍私…

[Mdp] lc 494. 目标和(01背包变种+dp+dfs)

文章目录 1. 题目来源2. 题目解析1. 题目来源 链接:494. 目标和 2. 题目解析 方法一:dfs 数据量比较小,长度只有 20,那么针对每一个数都有两种选择,正、负,即 2 20 = 100 w 2^{20} = 100w 220=100w 差不多的时间复杂度,dfs 解决即可。时间复杂度: O ( 2 n ) O(2^{n…

RocketMQ 顺序消息

顺序消息 顺序消息为云消息队列 RocketMQ 版中的高级特性消息,本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。 应用场景 在有序事件处理、撮合交易、数据实时增量同步等场景下,异构系统间需要维持强一致的状态同步&#…