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号