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.0

COPY . /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" ];then
   git_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" ];then
   git_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}
do
  ssh 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 ];then
   docker 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.mfbz.cn/a/770065.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF真入门教程34--爆肝了【仓库管理系统】

1、项目介绍 本项目是一个基于C#WPF实现的仓库管理系统,系统规模较小,适合入门级的项目练练手,但项目还是具有较高的学习价值,它采用mvvmlight框架,EF框架,WPF前端等技术构成。对于学习来说,可…

Ubuntu设置nacos开机以单机模式自启动

首先,需要安装jdk Ubuntu 安装JDK 创建Systemd服务单元文件 sudo vim /etc/systemd/system/nacos.service按i进入编辑模式,写入下面信息 [Unit] Descriptionnacos server Afternetwork.target[Service] Typeforking Environment"JAVA_HOME/opt/j…

树莓派0 2W重启后突然没有声音

树莓派0 2W重启后突然没有声音。 最近在使用该板卡。重启后突然出现了显示器不能显示界面的情况,接着用putty的ssh方式连接该板卡,能连上。使用vnc方式连接该板卡,也能连上。后来通过修改/boot/config.txt文件,能在显示器上显示界…

AI大模型深度学习:理论与应用全方位解析

背景 在当前技术环境下,AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力,还需要对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法,AI大模型学习能够不断提升模型的准确性和效率,为人类生活和工作带来更多…

用一百场线下讲座科普充电桩 能效电气做到了

在新能源汽车产业蓬勃发展的今天,充电桩作为产业链的重要环节,其建设与发展成为推动行业进步的关键。在这一背景下,能效电气凭借其卓越的技术实力和前瞻性的市场布局,成为了新能源充电桩行业的佼佼者。 为了进一步推动新能源产业的发展,普及充电桩知识,能效电气精心策划并举办…

LangChain的基本构成、组件与典型场景

【图书推荐】《ChatGLM3大模型本地化部署、应用开发与微调》-CSDN博客 在人工智能的持续演进中,语言模型,尤其是大型语言模型(LLM),例如备受瞩目的ChatGPT,已经稳固地占据了科技前沿的核心地位。这些模型不…

ChatGPT 论文助手:如何用 AI 技术加速学术写作过程

ChatGPT在论文写作中的应用 ChatGPT作为一个先进的语言模型,在学术论文创作领域提供显著帮助。它不仅提升学生与研究者的写作效率,还优化论文质量并引入创新观点。以下是ChatGPT在论文写作中的几种具体应用: 提升写作效率 生成写作构思&…

Mac密室逃脱游戏推荐:Escape Simulator for mac安装包

Escape Simulator 是一款逃生模拟游戏,玩家在游戏中需要寻找线索、解决谜题,以逃离各种房间或环境。这种类型的游戏通常设计有多个关卡或场景,每个场景都有不同的设计和难度。 在 Escape Simulator 中,玩家的目标通常是找到出口或…

Springboot+Vue3开发学习笔记《1》

SpringbootVue3开发学习笔记《1》 博主正在学习SpringbootVue3开发,希望记录自己学习过程同时与广大网友共同学习讨论。 一、前置条件 博主所用版本: IDEA需要破解,破解工具链接容易挂,关注私聊我单发。 Spring Boot是Spring提…

Zabbix 配置WEB监控

Zabbix WEB监控介绍 在Zabbix中配置Web监控,可以监控网站的可用性和响应时间。Zabbix提供了内置的Web监控功能,通过配置Web场景(Web Scenario),可以监控HTTP/HTTPS协议下的Web服务。 通过Zabbix的WEB监控可以监控网站…

深入解析RocketMQ的存储设计艺术(二)

1. 零拷贝与MMAP 1.1 什么是零拷贝? 零拷贝(英语: Zero-copy) 技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。 ➢零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据…

MySQL关于日志15个讲解

​​​​​​ 1. redo log是什么? 为什么需要redo log? redo log 是什么呢? redo log 是重做日志。 它记录了数据页上的改动。 它指事务中修改了的数据,将会备份存储。 发生数据库服务器宕机、或者脏页未写入磁盘,可以通过redo log恢复…

【web APIs】快速上手Day04(Dom节点)

目录 Web APIs - 第4天日期对象实例化方法案例-页面显示时间时间的另外一个写法 时间戳三种方式获取时间戳案例-毕业倒计时效果 节点操作DOM节点查找节点父节点查找案例-关闭广告子节点查找兄弟关系查找 增加节点创建节点追加节点案例-学成在线案例渲染克隆节点 删除节点 M端事…

零基础入门 Ai 数据挖掘竞赛-速通 Baseline-1

#AI夏令营 #Datawhale #夏令营 本项目为Datawhale 2024 年 AI 夏令营赛事,零基础入门 AI 数据挖掘竞赛-速通学习手册配套的代码项目。 项目链接:https://aistudio.baidu.com/bd-cpu-02/user/2961857/8113198/home#codelab 任务目标 根据给的test&…

JS基础与Chrome介绍

导言 在Web开发中后端负责程序架构和数据管理,前端负责页面展示和用户交互;在这种前后端分离的开发方式中,以接口为标准来进行联调整合,为了保证接口在调用时数据的安全性,也为了防止请求参数被篡改,大多数…

NFT音乐版权系统的主要功能

NFT音乐版权系统是指利用区块链技术和NFT技术来管理和交易音乐版权的系统。该系统的主要功能包括以下几个方面。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 音乐版权确权 NFT音乐版权系统可以为音乐作品的版权提供独特的标识和…

如何将 Apifox 的自动化测试与 Jenkins 集成?

CI/CD (持续集成/持续交付) 在 API 测试 中的主要目的是为了自动化 API 的验证流程,确保 API 发布到生产环境前的可用性。通过持续集成,我们可以在 API 定义变更时自动执行功能测试,以及时发现潜在问题。 Apifox 支持…

ETL数据集成丨使用ETLCloud实现MySQL与Greenplum数据同步

我们在进行数据集成时,MySQL和Greenplum是比较常见的两个数据库,我们可以通过ETLCloud数据集成平台,可以快速实现MySQL数据库与数仓数据库(Greenplum)的数据同步。 MySQL数据库: 优点: 轻量级…

mmcv安装失败及解决方案

假如想安装的版本是mmcv1.4.0, 但是pip install mmcv1.4.0总是失败,若是直接pip install mmcv会安装成功,但是安装的就是最新版本,后面代码跑起来还会报错,怎么办呢? 接下来分享一个mmcv指定版本安装的方式。 网页&a…

应用在灯带Type-C接口上的PD SINK协议芯片ECP5701/ECP5702获取充电器的5V、9V、12V、15V、20V供电

方案背景 近日,欧盟就统一充电器接口的提案达成了一项政治协议,其中规定了在欧盟地区销售的所有手机或其他便携式中小型电子设备必须采用统一的USB Type-C接口。这项决定意味着未来将会有更多的产品强制性地使用TYPE-C充电接口。 在这个背景下&#xf…