修改檔案資訊路徑如下:
/etc/docker/daemon.json
在設定檔中加入以下內容:
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
注意:如果沒有這個daemon.json,就自己在/etc/docker/目錄下創建一個
touch daemon.json
tcp是開啟遠端訪問,unix是本機訪問,不開啟本機訪問,在伺服器上使用時會有以下錯誤:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running ?
修改完成之後依序執行以下指令:
#重新加载配置文件 systemctl daemon-reload # 重启服务 systemctl restart docker.service # 查看端口是否开启 默认端口2375 netstat -anp|grep 2375
依序執行以下命令
添加指定需要开放的端口: firewall-cmd --zone=public --add-port=2375/tcp --permanent 重载入添加的端口: firewall-cmd --reload 查询指定端口是否开启成功: firewall-cmd --query-port=2375/tcp
注意:以上配置全是在防火牆開啟的情況下進行,如果未開啟系統防火牆,則無需以上配置,例如我的伺服器就沒有配置防火牆,運行時則顯示以下資訊:
最後我們看看我們的設定是否生效
curl http://127.0.0.1:2375/info
如果出現以下資訊則說明配置成功
如果你的idea版本較高,則內建了docker外掛程式
##如果沒有也不要擔心,我們自行安裝即可4.IDEA配置docker##注意:我上面的192.168.1.2是我自己的伺服器Ip,只需修改成你的docker所在伺服器ip即可
點擊Apply之後會在你的service中彈出點擊連接,我們就會發現我們docker配置的容器資訊
5.SpringBoot整合Docker設定
<!--docker-maven-plugin插件打包--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <!--镜像名称--> <imageName>${project.artifactId}</imageName> <!--指定标签--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--基础镜像jdk1.8--> <baseImage>java</baseImage> <!--制作者提供本人信息--> <maintainer>ninesun@qq.com</maintainer> <!--切换到Root目录--> <workdir>/ROOT</workdir> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <!--指定DockerFile路径--> <!-- <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>--> <!--指定远程docker api地址--> <dockerHost>http://192.168.1.2:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/ROOT</targetPath> <!--用于指定需要复制的根目录--> <directory>${project.build.directory}</directory> <!--用于指定需要复制的jar文件--> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
我所有的maven配置如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.6 com.example docker 0.0.1-SNAPSHOT docker docker 11 true true org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test <!--docker-maven-plugin插件打包--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <!--镜像名称--> <imageName>${project.artifactId}</imageName> <!--指定标签--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--基础镜像jdk1.8--> <baseImage>java</baseImage> <!--制作者提供本人信息--> <maintainer>ninesun@qq.com</maintainer> <!--切换到Root目录--> <workdir>/ROOT</workdir> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <!--指定DockerFile路径--> <!-- <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>--> <!--指定远程docker api地址--> <dockerHost>http://192.168.1.2:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/ROOT</targetPath> <!--用于指定需要复制的根目录--> <directory>${project.build.directory}</directory> <!--用于指定需要复制的jar文件--> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> org.springframework.boot spring-boot-maven-plugin
注意:在我們拉取插件成功之後,我們會發現目錄結構變成如下所示:
我們需要刪除一個啟動類,否則會導致打包失敗,我將DockerApplication直接刪除了
5.2 build映像
透過cmd進入到我們的專案目錄
#執行
mvn docker:build
出現以下訊息表示打包成功
接下來回到我們的idea,可以看到
這就是我們打包好的鏡像
在伺服器上執行docker images
5.3 啟動映像
docker run -d --name idea-docker-test -p 8089:8080 docker
註:我之所以暴露出8089端口,只要是因為8080衝突了,自己看自己的情況改就好
接下來我們訪問一下我們寫的測試介面:
可以看到已經部署成功,同時也可存取成功了
#我們可以看到在Idea裡也可看到了我們剛剛啟動成功的鏡像以及輸出的日誌
以上是idea怎麼快速實現將SpringBoot專案打包Docker映像並部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!