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.mzph.cn/pingmian/51460.shtml

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

相关文章

RuntimeError: No CUDA GPUs are available

RuntimeError: No CUDA GPUs are available 目录 RuntimeError: No CUDA GPUs are available 【常见模块错误】 【解决方案】 解决步骤如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科…

Spring 高级解析 07

文章目录 1. Spring 概述&#xff08;基本情况&#xff09;1.1 Spring 的优势1.2 Spring 的核⼼结构 2. 核⼼思想 IoC 和 AOP2.1 什么是IoC&#xff1f;2.2 什么是AOP2.3 AOP在解决什么问题 3. Spring IoC ⾼级应⽤3.1 BeanFactory与ApplicationContext区别3.1.1 BeanFactory3.…

Android虚假定位的实现与防护

Android中常用的定位方式 一&#xff0c;GPS定位 定义&#xff1a;全球卫星定位系统&#xff0c;直接和卫星交互&#xff0c;获取设备经纬度 优点&#xff1a; 走卫星通信通道&#xff0c;无需打开Wifi或流量就能获得位置信息 精确度最高&#xff0c;几米到几十米 缺点&a…

Java面试八股之Spring AOP 和 AspectJ AOP 的区别

Spring AOP 和 AspectJ AOP 的区别 Spring AOP 和 AspectJ AOP 是两种不同的面向切面编程&#xff08;Aspect-Oriented Programming, AOP&#xff09;实现。它们各有特点&#xff0c;适用于不同的场景。下面是一些主要的区别&#xff1a; 1. 实现机制 Spring AOP: 基于代理…

为Mac配置Alfred

参考资料&#xff1a; Alfred神器使用手册 | louis blogMacOS神器之Alfred workflow概览GitHub - arpir/Alfred-Workflows-Collection: 一些好用的 Alfred Workflow 一、修改快捷键 Spotlight的默认快捷键是Command Space Alfred的默认快捷键是Option Space 可以将Alfred和…

Alternating Sum

Problem - 963A - Codeforces 处理式子 显然中间式子是等比数列 // Problem: A. Alternating Sum // Contest: Codeforces - Tinkoff Internship Warmup Round 2018 and Codeforces Round 475 (Div. 1) // URL: https://codeforces.com/problemset/problem/963/A // Memory Lim…

awk用法

文章目录 一、awk工具awk工作原理AWK程序的结构awk内置变量 二、案例1.基础案列2.BEGIN END 运算3.数值与字符串的比较4.awk高级用法5. awk if语句6.BEGIN END 流程7.AWK 数组8.awk 循环 一、awk工具 awk工作原理 当读到第一行时&#xff0c;匹配条件&#xff0c;然后执行指定…

【C++11】C++11新纪元:深入探索右值引用与移动语义

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;位图与布隆过滤器 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C11 &#x1f4d2;1. C11简介…

【Qt】修改窗口的标题和图标

以下操作仅对顶层 widget(独⽴窗口),有效。 修改窗口的标题 一.windowTitle属性 1.概念 是一种在用户界面中显示窗口的标题的属性。它可以用来设置窗口的标题栏文本。 2.API API说明windowTitle()获取到控件的窗⼝标题.setWindowTitle(const QString& title)设置控件的…

10 BERT

目录 1 综述 1.1 BERT的核心思想 1.2 BERT的关键技术&#xff1a;预训练阶段 1.3 微调阶段 2 BERT的架构 2.1 输入处理 3. 特征选择/学习模块 BERT 的自注意力过程 4. 预训练任务&#xff1a;同时进行 4.1 Next Sentence Prediction (NSP) 4.2 Masked Language Model…

基于微信小程序+SpringBoot+Vue的网络安全科普系统(带1w+文档)

基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 优质的网络安全科普系统不仅可以单纯的满足工作人员管理的日常工作需求&#xff0c;还可以满足用户的需求。可以降低工作人员的工作压力&#xff0c;提高效…

2024.7.29 作业

1> 写一个日志文件&#xff0c;将程序启动后&#xff0c;每一秒的时间写入到文件中 #include <myhead.h> int main(int argc,const char *argv[]) {FILE *fp NULL;if((fpfopen("./log.txt","r"))NULL) {perror("open error1");return…

Python数值计算(1)

准备总结一下通过Python进行数值计算的环境&#xff0c;先说一下数值计算的基本语法和库。 1.基本运算 Python中提供基本运算符&#xff0c;常见的加减乘除&#xff0c;唯一需要注意的是除法&#xff0c;整数除法和浮点数除法不一样。 一般除法/&#xff0c;无论参与运算的数…

通信系统的均衡技术

1、摘要 在通信系统中&#xff0c;信号从发送端发出&#xff0c;经过信道&#xff0c;到达接收端&#xff0c;而在传输的过程中&#xff0c;信号会发生失真&#xff0c;产生失真的原因有很多&#xff0c;包括阻抗不匹配&#xff0c;干扰等。为了优化信号质量&#xff0c;需要进…

基于tkinter的学生信息管理系统之登录界面和主界面菜单设计

目录 一、tkinter的介绍 二、登陆界面的设计 1、登陆界面完整代码 2、部分代码讲解 3、登录的数据模型设计 4、效果展示 三、学生主界面菜单设计 1、学生主界面菜单设计完整代码 2、 部分代码讲解 3、效果展示 四、数据库的模型设计 欢迎大家进来学习和支持&#xff01…

灯具外贸公司用什么企业邮箱好

灯具外贸公司面对海外市场的推广、产品销售、客户沟通、市场信息收集等多重需求&#xff0c;选择一个合适的企业邮箱显得尤为重要。本文将介绍灯具外贸公司为什么应选择Zoho Mail企业邮箱&#xff0c;并详细探讨其优势和功能。 一、公司背景 广东省深圳市光明新区&#xff0c…

Redis 安装和数据类型

Redis 安装和数据类型 一、Redis 1、Redis概念 redis 缓存中间件&#xff1a;缓存数据库 nginx web服务 php 转发动态请求 tomcat web页面&#xff0c;也可以转发动态请求 springboot 自带tomcat 数据库不支持高并发&#xff0c;一旦访问量激增&#xff0c;数据库很快就…

vTESTstudio中如何添加DLL文件?

文章目录 一、CANoe添加DLL二、vTESTstudio中添加DLL1.手动添加2.代码添加 一、CANoe添加DLL 在CANoe中添加DLL的路径如下图&#xff0c;在Simulation Setup中选择需要添加的节点&#xff0c;右键选择Configuration进行添加DLL。 二、vTESTstudio中添加DLL 1.手动添加 在打…

java中 VO DTO BO PO DAO

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用_vo dto bo-CSDN博客 深入理解Java Web开发中的PO、VO、DTO、DAO和BO概念_java dto dao-CSDN博客