当前位置: 首页 > wzjs >正文

企业网站的内容免费空间网址

企业网站的内容,免费空间网址,学网站建设,微信h5网站开发一、环境版本清单: docker 26.1.4JDK 17.0.28Mysql 8.0.27Redis 6.0.5nacos 2.5.1maven 3.8.8jenkins 2.492.2 二、服务架构:有gateway,archives,system这三个服务 三、部署步骤 四、安装linux 五、在linux上安装redis&#…

一、环境版本清单:

  1. docker  26.1.4
  2. JDK 17.0.28
  3. Mysql 8.0.27
  4. Redis 6.0.5
  5. nacos 2.5.1
  6. maven 3.8.8
  7. jenkins 2.492.2

二、服务架构:有gateway,archives,system这三个服务

三、部署步骤

四、安装linux

五、在linux上安装redis,nacos,mysql, maven

六、安装docker-ce 

可以参考这个文章 Linux安装最新版Docker完整教程(建议收藏)_linux安装docker教程-CSDN博客

七、使用docker部署安装jenkins

可以参考这个文章

【Docker安装Jenkins打包SpringBoot应用为docker镜像并运行】_jenkins打包docker镜像-CSDN博客

 #创建jenkins_home数据挂载目录
mkdir /usr/local/jenkins_home
#赋值权限,否则后慢慢挂载会失败,这里我们给最高权限
chmod -R 777 /usr/local/jenkins_home
#拉取jenkins镜像 
docker pull jenkins/jenkins:lts
#启动jenkins容器
docker run -d --name=jenkins -p 8080:8080 --privileged=true \
-v /usr/local/jenkins_home:/var/jenkins_home \
-v /usr/local/java/jdk-17.0.12:/usr/local/java/jdk-17.0.12 \
-v /usr/local/apache-maven-3.8.8:/usr/local/apache-maven-3.8.8 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
#授予docker的操作权限给jenkins等容器使用
chmod a+rw /var/run/docker.sock

参数说明:
-v /usr/local/jenkins_home:/var/jenkins_home:是对容器内存储Jenkins的一些配置信息的文件夹
-v /usr/local/java/jdk-17.0.12:/usr/local/java/jdk-17.0.12 :是把linux下的jdk和容器内的关联(配置Jenkins时使用)
-v /usr/local/apache-maven-3.8.8:/usr/local/apache-maven-3.8.8:是把linux下的maven和容器内的关联(配置Jenkins时使用)
-v $(which docker):/usr/bin/docker:是把linux下的docker和容器内的关联
-v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我们Linux下的docker

其中容易踩坑的是:授予docker的操作权限给jenkins等容器使用,如果不赋予权限,后面在jenkins中使用shell脚本执行docker命令时,会报没有权限执行docker命令

#授予docker的操作权限给jenkins等容器使用
chmod a+rw /var/run/docker.sock

后面就开始部署项目,其中容易踩坑的就是,shell脚本和Dockerfile文件

首先,我们已经将 Linux 上的 jenkins_home 目录挂载到了 Jenkins 容器内,作为数据卷。这意味着 Jenkins 容器使用这个目录来存储其所有数据,包括构建后的 Java 程序包。通过这种方式,我们可以确保 Jenkins 容器内的 jenkins_home 目录与主机上的对应目录保持同步。因此,在部署过程中,Java 应用程序会在 Jenkins 容器中的 jenkins_home 目录下被打包,并且由于该目录被挂载到 Linux 主机上,我们可以在主机上直接访问这些打包好的文件。接下来,让我们看一下打包后我们的服务架构是如何组织的。

从上面可以看到默认工作目录是jenkins_home/workspace/项目名称(jenkins新建任务时的项目名称)

首先要明白一件事,就是我们有是微服务,那就会有很多个服务,难道要为每一个服务都重新从git上拉代码,打包,发布吗?那肯定是不对的,因为jenkins会对每一个任务都进行打包,那么这个workspace目录下就会多很多个只是名字不一样但是内容一模一样的目录,就会导致内存不足。

所以我想到一个解决方法就是,先新建一个jenkins任务使用maven打包但不执行shell脚本,也就是 上面的 lx-root,然后再为每一个服务新建一个任务不打包,只去执行shell脚本运行上面已经打包好的jar包。

步骤:先执行 lx-root 再执行别的服务

shell脚本:

#!/bin/bash
# 服务名称
SERVER_NAME=lx-modules-archives
echo $JAVA_HOME
java -version
# 源jar名称,mvn打包之后,target目录下的jar包名称
JAR_NAME=lx-modules-archives
# jenkins下的我们要执行的目录,target上一级目录
JENKINS_HOME=/var/jenkins_home/workspace/lx-root/lx-modules/lx-modules-archives
# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
echo "结束进程完成"
cd $JENKINS_HOME/target
cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target
# 修改文件权限
chmod 755 $JAR_NAME.jar
echo "看看docker能不能用"
docker -v
echo "停止容器"
# 停止容器
docker stop $SERVER_NAME
echo "删除容器"
# 删除容器
docker rm $SERVER_NAME
echo "删除镜像"
# 删除镜像
docker rmi $SERVER_NAME
echo "打包镜像"
# 打包镜像
docker build -t "$SERVER_NAME" .
echo "运行镜像"
# 运行镜像
docker run -d --network host --name ${SERVER_NAME} $SERVER_NAME

Dockerfile:

FROM openjdk:17
# 设置维护者信息(可选)
LABEL maintainer="lx"
# 设置工作目录
WORKDIR /app# 将当前目录下的 jar 包复制到容器中的 /app 目录下
COPY lx-modules-archives.jar /app/lx-modules-archives.jar# 暴露应用程序运行时的端口(这里假设你的 Spring Boot 应用监听的是 9999 端口)
EXPOSE 9302# 定义环境变量(可选)
ENV JAVA_OPTS=""# 启动应用
ENTRYPOINT ["sh", "-c", "java -jar /app/lx-modules-archives.jar"]

注意点一、 需要注意的是,shell脚本里我们已经使用 cd $JENKINS_HOME/target 进入了 target 目录,后面在Dockerfile里使用COPY lx-modules-archives.jar /app/lx-modules-archives.jar 时,要直接使用COPY lx-modules-archives.ja 而不需要 COPY /target/lx-modules-archives.jar,否则会找到jar包。

注意点二、还有一个注意点是我在运行我们build好的镜像之后

# 运行镜像
docker run -d --network host --name ${SERVER_NAME} $SERVER_NAME

运行镜像加了一个 --network host,这个主要是为了让docker容器和linux使用同一个网络通信,不使用端口映射。为什么要这样呢?

因为我在配置文件里连接nacos和redis写的127.0.0.1,那么docker在运行我们的服务时就会连接本地,但是我没在docker容器内部部署nacos和redis,而是部署在了linux上,而linux和nacos默认使用的是不同的网络,默认是桥接模式。

因为我们知道正常运行容器时 docker run -d --name=jenkins -p 8080:8080 使用的是端口映射的方式进行类似反向代理的功能,实际上网络还是不通信的。

详细的可以看下这个文章

详解Docker的网络模式之host模式(host网络模式)_docker host网络-CSDN博客

注意点三、我们在启动服务时连接nacos可能会出现超时现象,发现8848端口也开放防火墙了,

从日志看到有一个9848的端口也一直报错,所有把9848端口也开放防火墙就可以了

firewall-cmd --permanent --add-port=9848/tcp 

八、效果预览

 

 


文章转载自:

http://e16It35S.rmxwm.cn
http://PPJ2oJDs.rmxwm.cn
http://pbuM8xqI.rmxwm.cn
http://DFjVy0bU.rmxwm.cn
http://kILcoKjc.rmxwm.cn
http://NX6W1Kry.rmxwm.cn
http://zJNsYZS3.rmxwm.cn
http://XhbLAcuZ.rmxwm.cn
http://ahKODIHy.rmxwm.cn
http://d1XNkYqW.rmxwm.cn
http://ZPXERreO.rmxwm.cn
http://L4v3be7B.rmxwm.cn
http://4HVIgHQv.rmxwm.cn
http://ut0CSOQ4.rmxwm.cn
http://vGCfo3BD.rmxwm.cn
http://EcfIPzsq.rmxwm.cn
http://veLLrNt0.rmxwm.cn
http://lHZZsOD5.rmxwm.cn
http://GWhMyiZ0.rmxwm.cn
http://MjjvWeah.rmxwm.cn
http://lfMVaBcC.rmxwm.cn
http://WuBcQZgl.rmxwm.cn
http://0j16NndL.rmxwm.cn
http://wz8ydUkL.rmxwm.cn
http://ScNOrhtt.rmxwm.cn
http://R4w6Fcuf.rmxwm.cn
http://PYeWIeJO.rmxwm.cn
http://yzIVIUj0.rmxwm.cn
http://4Ie8Oaaw.rmxwm.cn
http://1ryY4jF4.rmxwm.cn
http://www.dtcms.com/wzjs/760175.html

相关文章:

  • 齐河县建设局网站网站建设专有名词
  • 网站建设培训哪里好百度商桥代码怎么加到网站上
  • 什么 电子商务网站建设与管生活+装修 北京卫视
  • 兰州优化网站排名网站开发排名
  • 做生鲜的网站手机wap网站用什么语言开发
  • 同一个服务器的网站做友情链接贵州住房和城乡建设厅官方网站
  • 滨州正规网站建设公司淘客网站app建设
  • 国外租车网站模板金安区住房和城乡建设局网站
  • 爱站网关键词密度查询南宁整合推广公司
  • 哪里有网站建设开发公司wordpress怎么创建自己的博客
  • 上海住房城乡建设厅网站咸阳做网站开发公司哪家好
  • 怎么下载网站源码wordpress分享qq插件下载地址
  • 网站建设与维护的实训总结上线了做网站要钱
  • 网站建设云浪科技如何去建立和设计一个公司网站
  • 番禺品牌型网站怎样把网站做的更好
  • 网站域名解析步骤淘宝上网站建设续费
  • 新开传奇网站迷失版网站怎么做搜索引擎
  • 网站备案服务号个人网页简历设计
  • 台州微网站建设企业信用报告网上查询
  • 做网站公司名字应该用图片吗库尔勒 网站建设
  • 电子商务网站建设简答题wordpress选择虚拟云主机
  • 360提示的危险网站给别人做网站怎么收取费用
  • 网站建设设计猫和老鼠北京网
  • 成都市医院网站建设个人怎么做网站页面
  • 外贸小语种网站建设vps网站目录显示灰色的
  • asp网站程序下载建设一个跟京东一样的网站
  • 建设营销型网站的步骤室内设计网站免费模板
  • 南昌公司网站建设公司南京小程序开发网站建设公司
  • 网站建设公司知名企业平面设计与广告设计
  • 生鲜超市店面设计江苏seo和网络推广