目录
去idea添加版本号 因为我是子继父 拆分的项目 需要这个 版本号随便给
创建私服仓库
阿里云 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仓库
项目不要忘记加这个文件
这个不加 上传仓库不了 太多了没必要的东西了
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
就可以了
如果想让他部署完了通知加个邮件 接下来就是邮件通知流程
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"
]
}
EOFsudo 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 直接在设置下面这里推送