idea配置docker打包Springboot項目
第一步:Docker 開放遠程 API 接口
編輯docker守護進程的配置文件/lib/systemd/system/docker.service,找到運行主命令的那一行,其內容大致為"ExecStart=/usr/bin/dockerd -H fd:// … "的那一行,添加
-H tcp://0.0.0.0:2375,意思是在 2375 端口開放 API 訪問。
然后運行下面命令重新加載運行:
sudo systemctl daemon-reload # 重新加載守護進程配置
sudo systemctl restart docker.service # 重啟 docker 服務
這樣就直接可以訪問了 http://{ip}:2375/version
第二步:POM中配置maven插件
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<!--將插件綁定在某個phase執行-->
<executions>
<execution>
<id>build-image</id>
<!--將插件綁定在package這個phase上。也就是說,用戶只需執行mvn package ,就會自動執行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的鏡像名,這里任意起,我這里是倉庫地址+項目名,便于后面push到鏡像倉庫-->
<imageName>124.220.1.37:5000/${project.artifactId}</imageName>
<!--指定標簽 這里指定的是鏡像的版本,我們默認版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定我們項目中Dockerfile文件的路徑-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定遠程docker 地址,這里需要開啟docker的tcp遠程訪問-->
<dockerHost>http://192.168.12.223:2375</dockerHost>
<!-- 這里是復制 jar 包到 docker 容器指定目錄配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar包所在的路徑 此處配置的即對應項目中target目錄-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,這里對應的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
第三步:maven打包
如果成功,docker中就會有該鏡像。萬事大吉,忽略后面操作。
不出意外會報錯:An HTTPS URI for DOCKER_HOST must be provided to use Docker client certificates
異常的意思是:pom配置中指定的<dockerHost>得是https的。并且要指定證書地址
第四步:給第一步中docker開放接口配置證書
找個文件夾,依次執行下面的命令生成證書文件,我這里放在/root/.docker/cert下面的,途中需要設置些證書密碼、基本信息什么的,證書密碼請謹慎填寫,后續命令需要用到
openssl genrsa -aes256 -out ca-key.pem 4096 openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem openssl genrsa -out server-key.pem 4096 openssl req -sha256 -new -key server-key.pem -out server.csr openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem openssl genrsa -out key.pem 4096 openssl req -new -key key.pem -out client.csr openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem rm -v client.csr server.csr chmod -v 0400 ca-key.pem key.pem server-key.pem chmod -v 0444 ca.pem server-cert.pem cert.pem
接著編輯/lib/systemd/system/docker.service文件
在相同的位置添加:
--tlsverify --tlscacert=/root/.docker/cert/ca.pem --tlscert=/root/.docker/cert/server-cert.pem --tlskey=/root/.docker/cert/server-key.pem
最終為這樣:
注意下這里的證書的文件夾是否正確
保存然后重啟docker
sudo systemctl daemon-reload # 重新加載守護進程配置
sudo systemctl restart docker.service # 重啟 docker 服務
第五步:再次修改POM文件
<!--指定遠程docker 地址,--> <dockerHost>https://192.168.12.223:2375</dockerHost> <!--指定docker的證書文件路徑--> <dockerCertPath>C:\Users\yaohy\Desktop\fsdownload\dockercert</dockerCertPath>
注意 dockerHost 改為https;dockerCertPath為證書文件路徑,就是剛剛生成的證書,從服務器上下載下來即可。
到這里再執行maven打包,不出意外就成功了,反正我是成功了。
如果再報錯請自行解決(°▽°)

浙公網安備 33010602011771號