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打包,不出意外就成功了,反正我是成功了。

如果再报错请自行解决(°▽°)

 

posted @ 2022-11-09 16:26  LinYhy  阅读(372)  评论(0编辑  收藏  举报