1.修改docker配置文件,打開2375端口
[root@s162 docker]# vim /usr/lib/systemd/system/docker.service
#查找 ExecStart,在末尾添加
#后面加上-H tcp://0.0.0.0:2375
[root@s162 docker]# systemctl daemon-reload
[root@s162 docker]# systemctl start docker
## 查看2375端口是否啟用
[root@s162 docker]# lsof -i:2375
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dockerd 27021 root 5u IPv6 352598799 0t0 TCP *:2375 (LISTEN)
2. Idea安裝配置docker插件
2.1. idea-plugins市場安裝docker插件
略…
2.2. 配置docker
![](/d/20211016/33b64ded8d16b206591456f75c30eeb9.gif)
3.springboot項目部署到docker服務(wù)器
3.1. 編寫docker/dockerfile
![](/d/20211016/a462834d3972f3b7b9b9ccda75e29e40.gif)
3.2.maven添加docker-maven-plugin插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--指定生成的鏡像名,如果不指定tag,默認(rèn)會使用latest-->
<imageName>jhs/${project.artifactId}:${project.version}</imageName>
<!--添加額外的指定標(biāo)簽, 非必須-->
<!--
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
-->
<!-- 指定 Dockerfile 路徑 :項目根路徑下-->
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
<!--指定遠(yuǎn)程 docker api地址-->
<dockerHost>http://192.168.129.162:2375</dockerHost>
<!-- copy資源 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--docker build dockerfile時:設(shè)置鏡像創(chuàng)建時的變量 -->
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
3.3. docker:build
使用命令$ mvn clean package docker:build -Dmaven.test.skip=true
構(gòu)建鏡像,在docker服務(wù)器上查看鏡像是否上傳成功:
![](/d/20211016/2a61adf868eed0d57d3030e6cfaaa5ee.gif)
3.4 docker:tag
docker命令行格式為:#docker tag <imageId or imageName> <nexus-hostname>:<repository-port>/<image>:<tag>
插件配置
<configuration>
補(bǔ)充配置:
<configuration>
<image>jhs/${project.artifactId}:${project.version}</image>
<!-- docker tag 打標(biāo)簽-->
<newName>192.168.129.160:5000/${project.artifactId}:${project.version}</newName>
</configuration>
為鏡像打上tag標(biāo)簽,為后續(xù)的push做準(zhǔn)備:mvn clean docker:tag -Dmaven.test.skip=true -DskipDockerBuild
![](/d/20211016/b6e3b7ddd91180363a39cf9eb006b205.gif)
3.5 docker:push
插件配置
<configuration>
補(bǔ)充配置:
<configuration>
<!-- docker push 推送到遠(yuǎn)程鏡像倉庫-->
<!-- serverId: 為在maven setting.xml配置的server信息id-->
<serverId>nexus-docker-registry</serverId>
<registryUrl>192.168.129.160:5000</registryUrl>
<!-- 打上tag的新鏡像 push 到nexus-->
<imageName>192.168.129.160:5000/${project.artifactId}</imageName>
</configuration>
將上文打上tag標(biāo)簽的鏡像,推送到私服nexus:mvn clean docker:push -Dmaven.test.skip=true -DskipDockerBuild -DskipDockerTag
![](/d/20211016/622c8a8762aa3cbfe2cba15e7e934cc1.gif)
3.6 docker插件參數(shù)
-DskipDockerBuild
to skip image build
-DskipDockerTag
to skip image tag
-DskipDockerPush
to skip image push
-DskipDocker
to skip any Docker goals
3.7 綁定命令到maven phases
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>tag-image</id>
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<image>jhs/${project.artifactId}:${project.version}</image>
<newName>192.168.129.160:5000/${project.artifactId}:${project.version}</newName>
</configuration>
</execution>
<execution>
<id>push-image</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<!-- docker push 推送到遠(yuǎn)程鏡像倉庫-->
<!-- serverId: 為在maven setting.xml配置的server信息id-->
<serverId>nexus-docker-registry</serverId>
<registryUrl>192.168.129.160:5000</registryUrl>
<imageName>192.168.129.160:5000/${project.artifactId}</imageName>
</configuration>
</execution>
</executions>
3.8 最佳實踐
<properties>
<docker.host>http://192.168.129.162:2375</docker.host>
<docker.registry.url>192.168.129.160:5000</docker.registry.url>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>dic/${project.artifactId}:${project.version}</imageName>
<!--添加額外的指定標(biāo)簽(可配置多個), 若果沒做指定,則為latest-->
<!--
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
-->
<!-- 指定 Dockerfile 路徑 :項目根路徑下-->
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
<!--指定遠(yuǎn)程 docker api地址-->
<dockerHost>${docker.host}</dockerHost>
<!-- copy資源 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--docker build dockerfile時:設(shè)置鏡像創(chuàng)建時的變量 -->
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>tag-image</id>
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<image>dic/${project.artifactId}:${project.version}</image>
<newName>${docker.registry.url}/${project.artifactId}:${project.version}</newName>
</configuration>
</execution>
<execution>
<id>push-image</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<!-- docker push 推送到遠(yuǎn)程鏡像倉庫-->
<!-- serverId: 為在maven setting.xml配置的server信息id-->
<serverId>nexus-docker-registry</serverId>
<registryUrl>${docker.registry.url}</registryUrl>
<imageName>${docker.registry.url}/${project.artifactId}</imageName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
4.Docker私服倉庫Harbor安裝的步驟詳解(補(bǔ)充)
https://www.jb51.net/article/161964.htm
到此這篇關(guān)于idea連接docker實現(xiàn)一鍵部署的文章就介紹到這了,更多相關(guān)idea連接docker一鍵部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!