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/bash

export repHost=xxx:16000/

export imageName

export imageTag



#解析参数
while getopts "i:t:r" opt; do
    case $opt in 
     i) 
      imageName=$OPTARG ;;
     t)
      imageTag=$OPTARG ;;
     r)  
          repHost=$OPTARG ;;
     \?)
     echo "无效"
     exit 1 ;;
    esac
done


export image=$repHost$imageName:$imageTag

echo "镜像名称: $imageName,镜像标签:$imageTag"
echo "$image"



#不能为空
if [ -z "$imageName" ]; then
    echo"镜像名称不能为空 使用-i"
          exit 1
fi 
if [ -z "$imageTag" ]; then
        echo"标签名称不能为空 使用-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 "没有找到这个容器"
fi


imageId=$(docker images -q  "$image")

if [ -n "$imageId" ]; then
 echo "删除镜像 $imageId"
 docker rmi "$imageId"
else
 echo "没有找到镜像"
fi

echo "镜像开始下载"

docker pull $image

docker 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.jar

target/
!.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  直接在设置下面这里推送

  • 38
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值