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

温州网站运营今天31个省新增最新消息

温州网站运营,今天31个省新增最新消息,百度怎么推广自己的信息,35互联做网站怎么样​ Idea集成docker实现镜像打包_ideadocker镜像打包-CSDN博客 ​ 之前通过这种方式虽然可以实现idea通过maven打jar包的同时把docker镜像也进行打包,但是这种方式存在很大漏洞,就是服务器的2375端口大开,任何人拿着idea通过这种方式都可以连…

​ Idea集成docker实现镜像打包_ideadocker镜像打包-CSDN博客

​ 之前通过这种方式虽然可以实现idea通过maven打jar包的同时把docker镜像也进行打包,但是这种方式存在很大漏洞,就是服务器的2375端口大开,任何人拿着idea通过这种方式都可以连接服务器去进行操作,风险很大。所以这种就只适合自己在局域网访问使用,如果放到公网操作的话,就要通过ca加密后来进行操作。

​ 这是docker官网的Demo,演示如何通过ca加密

https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl

​ 不过我根据官网的操作步骤操作下来,大部分是没问题的,后面有些操作却过不去,所以自己总结了一下。

​ 前面都是根据官网的操作进行

image-20250317133822392

​ 在/usr/local目录下新建一个文件夹ca,并进入这个文件夹开始操作

cd /usr/local/
mkdir ca
cd ca

image-20250317134723318

openssl genrsa -aes256 -out ca-key.pem 4096

​ 执行上面命令后,设置一下秘钥

image-20250317134825818

​ 在连续两次正确秘钥输入后,再执行下面命令

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

​ 此时会要求输入刚才设置的秘钥,当输入秘钥后会要求输入国家、省、市、公司、部门、姓名、邮件地址等信息

image-20250317135224699

​ 接下来按照官方文档的命令继续:

image-20250317135502666

​ 执行下面命令

openssl genrsa -out server-key.pem 4096

image-20250317142859344

​ 上面命令执行后,再执行下面命令,但是 $HOST 要换成对应的docker服务器的ip地址或域名

openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr

image-20250317143029892

​ 上面命令执行后,再执行下面命令,但是 $HOST 要换成对应的docker服务器的域名,如果没有域名可以将该参数删除。而后面两个IP第一个是docker服务器的IP,第二个则是本地回环地址就写127.0.0.1即可

echo subjectAltName = DNS:$HOST,IP:10.10.10.20,IP:127.0.0.1 >> extfile.cnf

echo subjectAltName = IP:10.10.10.20,IP:127.0.0.1 >> extfile.cnf

image-20250317143201455

​ 上面命令执行后,再执行下面命令

echo extendedKeyUsage = serverAuth >> extfile.cnf

image-20250317143555123

​ 上面命令执行后,再执行下面命令,执行的过程中也会提示输入之前设置的秘钥

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

image-20250317143610936

​ 接下来按照官方文档的命令继续:

image-20250317143817217

​ 执行下面命令

openssl genrsa -out key.pem 4096

image-20250317144251707

​ 上面命令执行后,再执行下面命令

openssl req -subj '/CN=client' -new -key key.pem -out client.csr

image-20250317144312100

​ 上面命令执行后,再执行下面命令

echo extendedKeyUsage = clientAuth > extfile-client.cnf

image-20250317144414862

​ 上面命令执行后,再执行下面命令,执行的过程中,需要输入之前设置的秘钥

openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile-client.cnf

image-20250317144504980

​ 接下来可以删除多余的文件

rm -v client.csr server.csr extfile.cnf extfile-client.cnf

image-20250317144645700

​ 接下来按照官方文档的命令继续:

image-20250317155227696

​ 上面命令执行后,再执行下面命令设置权限

chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

image-20250317144927908

​ 但是再继续执行下面命令的时候,可能会报错

dockerd \--tlsverify \--tlscacert=ca.pem \--tlscert=server-cert.pem \--tlskey=server-key.pem \-H=0.0.0.0:2376

image-20250317155351142


​ 之前做到这一步后我卡住了,后来折腾了一翻后终于也算完成

​ 接下来的操作就不照官网操作了,将当前目录下的pem文件进行拷贝到 /etc/docker 目录下

cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/

image-20250317155836097

​ 使Docker守护程序仅接受来自提供CA信任的证书的客户端的连接,打开 docker.service 文件

vim /lib/systemd/system/docker.service

​ 将原先ExecStart开头的内容前面加#注释掉

image-20250317160252873

​ 替换为:

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

image-20250317160433154

​ 重新加载daemon并重启docker

systemctl daemon-reload
systemctl restart docker

​ 保存相关客户端的pem文件到本地

image-20250317161133450

​ 在idea中进行相关配置,看到下面提示 Connection successful 就表示连接成功了

image-20250317161623023

​ 在项目根目录下创建Dockerfile文件并添加如下内容,当然具体/target目录下的jar包名,则需要根据实际情况进行修改

FROM openjdk:8-jdk
MAINTAINER BruceWong brucewong@huskystudio.cn
WORKDIR /ROOT
ADD /target/docker-1.0-SNAPSHOT.jar /ROOT/app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
CMD ["java", "-version"]

​ 在SpringBoot项目的pom.xml中的build节点添加如下内容,当然springboot使用的版本要与你使用的对应,dockerHost节点设置为你的docker服务器的地址,dockerCertPath则是你刚才保存相关客户端的pem文件的目录

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 这里对应你的spring-boot的版本 --><version>2.5.0</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version><configuration><!-- 镜像名称 testspringboot--><imageName>brucewong</imageName><!--指定标签--><imageTags><imageTag>latest</imageTag></imageTags><!-- 基础镜像jdk 1.8--><baseImage>openjdk:8-jdk</baseImage><!-- 制作者提供本人信息 --><maintainer>BruceWong brucewong@huskystudio.cn</maintainer><!--切换到/ROOT目录 --><workdir>/ROOT</workdir><cmd>["java", "-version"]</cmd><entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint><!-- 指定 Dockerfile 路径 --><dockerDirectory>${project.basedir}</dockerDirectory><!--指定远程 docker api地址--><dockerHost>https://192.168.2.244:2375</dockerHost><!-- 指定本地证书路径 --><dockerCertPath>D:\Bruce\docker\ca</dockerCertPath><!-- 这里是复制 jar 包到 docker 容器指定目录配置 --><resources><resource><targetPath>/ROOT</targetPath><!--用于指定需要复制的根目录,${project.build.directory}表示target目录--><directory>${project.build.directory}</directory><!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。--><include>${project.build.finalName}.jar</include></resource></resources><!-- 跳过远程镜像查找 --><skipRemoteLookup>true</skipRemoteLookup><!-- 设置连接超时时间 --><timeoutSeconds>120</timeoutSeconds></configuration><!--当执行mvn package 时,执行: mvn clean package docker:build --><executions><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions></plugin><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version><executions><execution><id>auto-clean</id><phase>initialize</phase><goals><goal>clean</goal></goals></execution></executions></plugin></plugins></build>

​ 运行maven的package命令,进行打包,这时候不光是打包了jar文件,同时还将其打包成docker镜像并推送到docker服务器上

image-20250317165642416

image-20250317165813539

​通过docker images命令就可以看到推送到服务器上的镜像为brucwong,因为依赖jdk所以把openjdk也拉取到服务器上

docker images

image-20250317165854484

​在Idea中也可以看到推送的镜像

image-20250317170618484

​这时候可以通过docker run命令根据镜像创建容器,也可以在idea中选中镜像直接创建容器都可以

image-20250317170812268

image-20250317170906678

image-20250317170928882

image-20250317170954453

image-20250317171029217

image-20250317171105717

​通过docker ps命令查看容器情况

docker ps 

image-20250317171136831

总结:

​如果项目是通过docker部署的,那么发布的方式可能是先maven打包成jar,然后拷贝到服务器,删除原先docker的容器与镜像,然后通过docker build -t 生成镜像,再通过docker run命令根据镜像创建容器。

​而通过以上方式则实现了,在idea中能直接打jar的同时打包docker镜像并推送到服务器,只需要手动创建下容器即可,简化了整体的操作步骤,而且通过ca加密后,那么必须有对应秘钥的客户端才能进行打包,安全性也有所提升。

​当然这是单体项目或者团队较小的情况下可以这么试试,如果是项目规模很大团队人员也多的情况下,那更专业的方式肯定是通过 CI/CD 的方式来实现项目部署……

http://www.dtcms.com/a/397173.html

相关文章:

  • 服装市场网站建设营销网
  • 阿里云云主机做网站什么是网站流量优化
  • 建设网站客户资源从渠道来河北港网站建设
  • 中国做国际期货最大的网站做公司网站需要服务器吗
  • 10_10_微信里网站怎么做的在线教育平台系统搭建
  • 宜宾网站制作公司mvc做网站用的多不多
  • 网站建设经济可行性网站建设数据库系统
  • 网站开发技术期中试题网站建设对帮助信息的设置
  • 寻花问柳专注做一家男人喜欢的网站施工企业费用预算的编制的内容包括
  • 安徽网站建设seo优化关键词优化排名软件哪家好
  • 苏州做网站建设网站建设经典文章
  • dedecms 网站根目录招工网站怎么做
  • 网站开发发帖语言网站建设费用分类
  • 装修网站设计平台建设厅考试网站
  • CP网站建设搭建需要多少钱常州设计公司
  • 专业定制网站设计网站怎样上传到空间
  • 综合网站系统自己做的网站跳转到购彩大厅
  • 最早做美食团购的网站江苏省建设工程协会网站
  • 镇江建设工程质量监督局网站外国网站学习做任务 升级
  • 哈尔滨旅游团购网站建设网站建设合约具体内容
  • 上海网站建设seo站霸网络乌当区城乡建设局网站
  • 住房和城乡建设岗位评定网站深圳营销网站有限公司
  • 自己做电视视频网站公司建立网站的意义
  • ui设计网站模板教学系统设计 网站开发
  • 杭州市建设网站网站流量的主要来源有
  • 长春市住房和城乡建设厅网站临沂企业宣传片制作公司
  • 移动网站排名怎么做佛山推广seo排名
  • 网页设计列表专业网站排名优化
  • 建设网站的定位珠海建站模板搭建
  • 想学网站建设选计算机应用技术还是计算机网络技术哪个专业啊wordpress 爱主题