dockerfile部署镜像 ->push仓库 ->虚拟机安装建木 ->自动部署化 (详细步骤)

目录

创建私服仓库

vi /etc/docker/daemon.json

vim deploy.sh判断脚本内容

创建 建木  +  后端部署

命名空间

设置密码用户名

创建git仓库

gitignore文件内容

图形项目操作

git

maven

docker镜像

点击流程日志

vim /etc/docker/daemon.json

执行部署脚本 ip 开发环境

webhook

设置--->web钩子-->URL

qq

"克隆 "DSL

去idea添加版本号 因为我是子继父  拆分的项目 需要这个 版本号随便给

然后仓库的依赖也不要忘记给

前端部署

这里再下载一个nginx 直接最新版本

 加速包

服务器之间传输命令操作   +   安装nginx

vim default.conf脚本操作

容器化时代的前端部署 

大致流程图

git 

node

缓存

scp


创建私服仓库

 阿里云 liunx dockerfile构建镜像 部署 (超细 手把手教)-CSDN博客

名字随便取

16000

容许覆盖  默认阿里

在这里授权

保存 开端口

采访是这样的 

vi /etc/docker/daemon.json

里面放 "insecure-registries":["xxxx:16000"]  前面是你自己的ip 是nexus的服务器ip

刷新  systemctl daemon-reload

重启 systemctl restart docker

nexus登录  docker login xxxx(ip):16000

 docker tag cloud-file:1.0.0 xxxx:16000/cloud-file:1.0.0docker push xxxx:16000/cloud-file:1.0.0

觉得下载慢的可以换成服务器的ip私就快 那个是内网

知道大家懒 所以我复制上来了

vim deploy.sh判断脚本内容

vim deploy.sh

#!/bin/bashexport repHost=xxx:16000/export imageNameexport imageTag#解析参数
while getopts "i:t:r" opt; docase $opt in i) imageName=$OPTARG ;;t)imageTag=$OPTARG ;;r)  repHost=$OPTARG ;;\?)echo "无效"exit 1 ;;esac
doneexport image=$repHost$imageName:$imageTagecho "镜像名称: $imageName,镜像标签:$imageTag"
echo "$image"#不能为空
if [ -z "$imageName" ]; thenecho"镜像名称不能为空 使用-i"exit 1
fi 
if [ -z "$imageTag" ]; thenecho"标签名称不能为空 使用-t"exit 1
fi #判断容器是否存在
# 使用 docker ps -a 检查所有容器,然后 grep 过滤出特定的容器ID
containerId=$(docker ps -a | grep  "$imageName" | awk '{print $1}') 
echo "容器id--------------$containerId"#如果 containerId 不为空,说明找到了对应的容器
if [ -n "$containerId" ]; then
#检查容器是否正在运行if docker inspect -f '{{.State.Running}}' "$containerId" | grep -q "true"; then#停止容器echo"停止容器$imageName -$containerId"docker stop "$containerId"fi# 删除容器echo "删除容器 $imageName - $containerId"docker rm -f "$containerId"
else#如果没有找到容器,打印一条信息并忽略echo "没有找到这个容器"
fiimageId=$(docker images -q  "$image")if [ -n "$imageId" ]; thenecho "删除镜像 $imageId"docker rmi "$imageId"
elseecho "没有找到镜像"
fiecho "镜像开始下载"docker pull $imagedocker run -d --name $imageName --network=dev-net \
$image

 mkdir jianmu

cd  jianmu/

wget https://gitee.com/jianmu-dev/jianmu-deploy/raw/master/docker-compose.yml

 docker compose up -d

直接ip访问:80 记得放端口不然访问不了

 登录  用户名 admin  密码他默认123456  

创建 建木  +  后端部署

建木有什么作用呢 

刚刚上面一堆操作 这个那个命令的 有了他 会方便很多   持续集成持续部署 我刚才演示的都是部署到线上  但是 ,我们得清楚  ,有些东西不需要那么繁琐,就能部署到线上,首先,先创建密钥得创建一个命名空间。

点击进去创建

命名空间

设置密码用户名

都是你之前设置的服务器 等等其他的密码

根据你的需求

这是我依次创建好的

就可以去进行编排 

创建git仓库

Git勤勉 两种方式上传-CSDN博客

项目不要忘记加这个文件

 

这个不加 上传仓库不了 太多了没必要的东西了

gitignore文件内容

######################################################################
# Build Tools.gradle
/build/
!gradle/wrapper/gradle-wrapper.jartarget/
!.mvn/wrapper/maven-wrapper.jar######################################################################
# IDE### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr### JRebel ###
rebel.xml
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/######################################################################
# Others
*.log
*.xml.versionsBackup
*.swp!*/build/*.java
!*/build/*.html
!*/build/*.xml

这个仓库是我之前拆分项目创建其中之一一个仓库

图形项目操作

把链接复制好 去这图形项目里开始操作

git

把前面创建好的仓库链接复制过来

 设置节点名字 把刚刚复制的git链接给他 及名字密码 接下来就是Maven 记得连接否则没有参数

maven

然后去你的nexus复制公共路径 这里要用nexus的内网ip 

然后保存  

docker镜像

不要有空格

直接在这个界面再创建一个命名 就取个名字什么都不用加 变成下面的样子

触发  打开里面是这样的

点击流程日志

他先因为第一次 没有镜像,所以他先会去拉。拉完镜像之后,它才会执行。第一次的话都会稍微有点慢,是正常现象。
此时你的建木服务器有需要修改一个配置

vim /etc/docker/daemon.json

里面放

再去登录

docker login xxx:1600

然后再去建木重启触发

强调(如果有依赖报错 解决之后需要再上传git 同时也要deploy  如果是子继承父 需要加版本号 最重要的是公共仓库地址也要给)

<distributionManagement><repository><id>yun-releases</id><name>yun-releases</name><url>http://xxxx:8081/repository/maven-releases/</url></repository>
</distributionManagement>

执行部署脚本 ip 开发环境

sh /home/deploy/deploy.sh -i()-t ()

webhook

如果不想每次手动 可以搞个webhook 接下来就是教程

这个时候点击git system仓库的设置 会有个web钩子 这个作用是不需要自己手动触发

 

然后去建木拉一个这个

保存后点击这个会出现一个链接 然后放到这里

设置--->web钩子-->URL

就可以了

如果想让他部署完了通知加个邮件 接下来就是邮件通知流程

qq

host:smtp.qq.com

port:587

"克隆 "DSL

因为不可以克隆 所以只能一个一个把其他项目也是按照这个步骤  但是不是完全没有办法

 

进去有一个查看DSL

复制一下到

代码项目这里操作 粘贴上去

到这边把这个改成你其他git项目的链接

这里要name也要改变

就出现这个

进去复制给你现在这个项目创建钩子

去idea添加版本号 因为我是子继父  拆分的项目 需要这个 版本号随便给

然后仓库的依赖也不要忘记给

<distributionManagement><repository><id>yun-releases</id><name>yun-releases</name><url>http://xxxx:8081/repository/maven-releases/</url></repository>
</distributionManagement>

还有忽略包 前面忘记说了

<!-- 加入maven deploy插件,当在deploy时,忽略些model-->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</skip></configuration>
</plugin>

然后上传git上

再去建木启动就好了

前端部署

去服务器把原本Nginx80端口删了或者杀了  因为我前面下载过nginx了

ps aux | grep nginx

 kill -9  (id)

 现在把之前在虚拟机部署的东西都可以删除了

rm -rf  (auth/)名称

因为我们要用容器化了

Nginx也删除 不需要它代替谁了

rm -rf  (nginx/)名称

这里再下载一个nginx 直接最新版本

docker pull  nginx

 加速包

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://hub.uuuadc.top",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn"
    ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

服务器之间传输命令操作   +   安装nginx

或者 去有加速包的服务器拉一下传输过来

 docker save -o nginx.tar nginx

ifconfig   查看网络接口配置  找到eth0下面的ip  (在你要的服务器查看)

scp nginx.tar root@xxx(是你刚刚查看的ip):/home/nginx.tar

yes  输入你的密码

成功

这个时候在那边服务器操作

docker load < /home/nginx.tar  

启动  docker run --name nginx -p 80:80 nginx

访问这个ip+80

出现这个才正常

  docker exec -it nginx /bin/bash

cd ..

cd etc/

ls

cd /nginx

ls

 cat nginx.conf

这是一些工作的一些目录

exit

mkdir config 

docker cp nginx:/etc/nginx/conf.d/default.conf ./

vim default.conf

vim default.conf脚本操作

把这个注释了 

 

换成这个
      location / {
          root /home/html/dist;
          try_files $uri $uri/ /index.html;
          index index.html index.htm;
     }

      location /prod-api/ {
           proxy_set_header Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header REMOTE-HOST $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass http://cloud-gateway:8080/;
         }
 

vim deployNginx.sh 

#!/bin/bash
docker run -d \
 --name cloud-wed \
 --network dev-net \
 -p 80:80 \
 -v ./config/default.conf:/etc/nginx/conf.d/default.conf \
 -v ./html:/home/html \
 nginx
 

docker rm -f nginx

  sh deployNginx.sh 

docker logs -f cloud-wed

好了 Linux操作结束

接下来就是容器化时代的前端部署

容器化时代的前端部署 

build:prod

大致流程图

git 

node

缓存


在这里新建一个缓存。新建缓存。给他挂缓存。缓存目录给它挂一下就行了。这样的你第一次下载会比较慢一点。但是第二次下载了,他会用你第一次下载的东西

现在建木传到建开发环境。服务器与服务器之间传输。
 这个时候就需要scp了

scp

这里是为了确定前端打包路径     /home/deploy/web-ui/html/dist

去git  直接在设置下面这里推送

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

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

相关文章

Linux网络——深入理解传入层协议TCP

目录 一、前导知识 1.1 TCP协议段格式 1.2 TCP全双工本质 二、三次握手 2.1 标记位 2.2 三次握手 2.3 捎带应答 2.4 标记位 RST 三、四次挥手 3.1 标记位 FIN 四、确认应答(ACK)机制 五、超时重传机制 六 TCP 流量控制 6.1 16位窗口大小 6.2 标记位 PSH 6.3 标记…

Jackson常用注解详解

Hi &#x1f44b;, Im shy 有人见尘埃&#xff0c;有人见星辰 Jackson常用注解详解 文章目录 Jackson常用注解详解0. 引入依赖1. JsonProperty2. JsonIgnore3. JsonFormat4. JsonInclude5. JsonCreator6. JsonValue7. JsonIgnoreProperties结论 Jackson是Java生态系统中广泛…

Redis学习[1] ——基本概念和数据类型

Redis学习[1] ——基本概念和数据类型 一、Redis基础概念 1.1 Redis是什么&#xff0c;有什么特点&#xff1f; Redis是一个基于**内存的数据库&#xff0c;因此读写速度非常快**&#xff0c;常用作缓存、消息队列、分布式锁和键值存储数据库。支持多种数据结构&#xff1a;…

大数据与人工智能:数据隐私与安全的挑战_ai 和 数据隐私

前言 1.背景介绍 随着人工智能(AI)和大数据技术的不断发展&#xff0c;我们的生活、工作和社会都在不断变化。这些技术为我们提供了许多好处&#xff0c;但同时也带来了一系列挑战&#xff0c;其中数据隐私和安全是最为关键的之一。数据隐私和安全问题的出现&#xff0c;主要…

分布式锁的三种实现方式:Redis、基于数据库和Zookeeper

分布式锁的实现 操作共享资源&#xff1a;例如操作数据库中的唯一用户数据、订单系统、优惠券系统、积分系统等&#xff0c;这些系统需要修改用户数据&#xff0c;而多个系统可能同时修改同一份数据&#xff0c;这时就需要使用分布式锁来控制访问&#xff0c;防止数据不一致。…

angular入门基础教程(九)依赖注入(DI)

依赖注入 Angular 中的依赖注入&#xff08;DI&#xff09;是框架最强大的特性之一。可以将依赖注入视为 Angular 在运行时为你的应用 提供所需资源的能力。依赖项可以是服务或其他资源。 使用服务的一种方式是作为与数据和 API 交互的方式。为了使服务可重用&#xff0c;应该…

实战:ZooKeeper 操作命令和集群部署

ZooKeeper 操作命令 ZooKeeper的操作命令主要用于对ZooKeeper服务中的节点进行创建、查看、修改和删除等操作。以下是一些常用的ZooKeeper操作命令及其说明&#xff1a; 一、启动与连接 启动ZooKeeper服务器&#xff1a; ./zkServer.sh start这个命令用于启动ZooKeeper服务器…

SSM学习9:SpringBoot简介、创建项目、配置文件、多环节配置

简介 SpringBoot式用来简化Spring应用的初始搭建以及开发过程的一个框架 项目搭建 File -> New -> Project 选中pom.xml文件&#xff0c;设置为maven项目 项目启动成功 可以访问BasicController中的路径 配置文件 在resources目录下 application.properties 默…

Linux——管理本地用户和组(详细介绍了Linux中用户和组的概念及用法)

目录 一、用户和组概念 &#xff08;一&#xff09;、用户的概念 &#xff08;二&#xff09;、组的概念 补充组 主要组 二、获取超级用户访问权限 &#xff08;一&#xff09;、su 命令和su -命令 &#xff08; 二&#xff09;、sudo命令 三、管理本地用户账户 &…

WPF---Prism视图传参

Prism视图传参方式。 实际应用场景 点击tabitem中的列表数据&#xff0c;同步更新到ListStatic Region对应的界面。目前用两种方式实现了传参数据同步。 第一&#xff0c;事件聚合器&#xff08;EventAggregator&#xff09; 1. 定义事件 创建一个事件类&#xff0c;用于传…

微信小程序配置访问服务器失败所发现的问题及解决方案

目录 事前现象问题1&#xff1a;问题现象&#xff1a;问题分析&#xff1a; 问题2&#xff1a;问题现象&#xff1a;问题分析&#xff1a;解决方案&#xff1a; 事后现象 事前现象 问题1&#xff1a; 问题现象&#xff1a; 在本地调试时&#xff0c;一切顺利&#xff0c;但一…

JAVA开源的html转pdf、png转pdf项目

总览 Open HTML to PDF是一个纯Java库,用于使用CSS 2.1(以及更高版本的标准)对合理子集的格式良好的XML/XHTML(甚至一些HTML5)进行布局和格式化,输出为PDF或图像。 使用该库生成漂亮的PDF文档。但请注意,您不能将现代HTML5+直接应用于该引擎并期望获得出色的结果。您必…

妈吖,看过这个大厂的oracle主键自增,我的信心暴增!信创,国产数据库也能行。

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” 1.数据库oracle自增主键字段思维导图 在Oracle数据库中&#xff0c;可以通过创建序列&#xff08;SEQUENCE&#xff09;来实现自增功能。但也可以不在数据库中实现&#xff0c;而是通过程…

Docker中使用自定义网络方式实现Redis集群部署与测试流程

场景 Docker中Docker网络-理解Docker0与自定义网络的使用示例&#xff1a; Docker中Docker网络-理解Docker0与自定义网络的使用示例-CSDN博客 参考上面的流程实现自定义网络的实现。 下面记录其应用实例&#xff0c;使用Docker的自定义网络实现redis集群部署。 注&#xf…

vue3数据结构的渲染01

处理数据&#xff1a; //现有原始数据showCertificateUrl “url01;url02” 使用以下代码将两条通过分号";"分割的url进行处理 const parseUrls () > {urls.value [];// 每次重新赋值前一定要清空之前的旧数据&#xff01;if (!showCertificateUrl.value) {retu…

数模打怪(八)之图论模型

一、作图 图的数学语言描述&#xff1a; G( V(G), E(G) )&#xff0c;G&#xff08;graph&#xff09;&#xff1a;图&#xff0c;V&#xff08;vertex&#xff09;&#xff1a;顶点集&#xff0c;E&#xff08;edge&#xff09;&#xff1a;边集 1、在线作图 https://csac…

自闭症儿童能否上学:家长的选择与困惑

在自闭症儿童的成长旅程中&#xff0c;上学这一关键议题常常使家长陷入异常艰难的抉择和无尽的困惑之中。对于自闭症儿童究竟能否上学&#xff0c;家长们不得不面对众多纷繁复杂且至关重要的考量因素。 一方面&#xff0c;家长们怀揣着美好的期望&#xff0c;渴望孩子能够融入正…

C# 使用pythonnet 迁入 python 初始化错误解决办法

pythonnet 从 3.0 版本开始&#xff0c;必须设置Runtime.PythonDLL属性或环境变量 例如&#xff1a; string pathToVirtualEnv ".\\envs\\pythonnetTest"; Runtime.PythonDLL Path.Combine(pathToVirtualEnv, "python39.dll"); PythonEngine.PythonHom…

知识图谱增强的RAG(KG-RAG)详细解析

转自&#xff1a;知识图谱科技 这是一个与任务无关的框架&#xff0c;它将知识图谱&#xff08;KG&#xff09;的显性知识与大型语言模型&#xff08;LLM&#xff09;的隐含知识结合起来。这是该工作的arXiv预印本 https://arxiv.org/abs/2311.17330 。 我们在这里利用一个名为…

linux中mysql的安装使用(普通版版本+docker版本)

linux中mysql的安装使用 一、普通安装1.下载安装包2.流程 二、用docker安装1.拉取mysql镜像2.启动镜像3.开启权限第一种情况第二种情况 三、用Navicat连接 一、普通安装 1.下载安装包 挑选个你喜欢的目录&#xff0c;用wget下载并且解压 wget http://dev.mysql.com/get/Down…