一鍵部署應用到遠程服務器,IDEA 官方 Docker 插件太頂了!
程序員的成長之路互聯(lián)網/程序員/技術/資料共享?
關注
閱讀本文大概需要 5.5 分鐘。
來自:https://blog.csdn.net/qq_35976271/article/details/100287663
一、 docker開啟遠程連接訪問首先我們要開啟docker的遠程連接訪問。保證不是docker所在的服務器,也能夠遠程訪問docker。Linux版的docker:1、修改 docker.service 文件,添加監(jiān)聽端口 -H tcp://0.0.0.0:2375
vi?/usr/lib/systemd/system/docker.service
2、重啟docker
systemctl?daemon-reload
systemctl?start?docker

安裝配置idea的docker插件
- 在File --> Settings --> Plugins 在輸入框中搜索Docker,選擇并安裝。安裝完成后重啟Docker。
4、配置docker在File–> Settings–>Build,Execution,Deployment中找到Docker新建一個docker實例,然后在Engine API URL中將docker所在ip端口號填上,填完如果下面顯示Connection successful證明連接docker成功。如果失敗,可能是我們上一步docker開啟遠程連接未成功。我們設置完成后,回到idea主界面,可以看到頁面下面有一個docker窗口。點擊綠色箭頭,連接docker。連接上后顯示Containers和Images就是我們現(xiàn)在docker中已經有的容器和鏡像。
創(chuàng)建項目,并配置
一 、 創(chuàng)建項目
我就以一個簡單的Eureka項目演示。File–> New -->Project --> Spring Initializr


二、 配置項目
1. 修改pom.xml文件,引入docker-maven-plugin插件相關配置. 改配置在標簽內:
<!--使用docker-maven-plugin插件-->
<plugin>
????<groupId>com.spotify</groupId>
????<artifactId>docker-maven-plugin</artifactId>
????<version>1.0.0</version>
????<!--將插件綁定在某個phase執(zhí)行-->
????<executions>
????????<execution>
????????????<id>build-image</id>
????????????<!--將插件綁定在package這個phase上。也就是說,
????????????用戶只需執(zhí)行mvn?package?,就會自動執(zhí)行mvn?docker:build-->
????????????<phase>package</phase>
????????????<goals>
????????????????<goal>build</goal>
????????????</goals>
????????</execution>
????</executions>
????<configuration>
????????<!--指定生成的鏡像名,這里是我們的項目名-->
????????<imageName>${project.artifactId}</imageName>
????????<!--指定標簽?這里指定的是鏡像的版本,我們默認版本是latest-->
????????<imageTags>
????????????<imageTag>latest</imageTag>
????????</imageTags>
????????<!--?指定我們項目中Dockerfile文件的路徑-->
????????<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
????????<!--指定遠程docker?地址-->
????????<dockerHost>http://127.0.0.1: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>
2. 配置項目的基本配置。( 這里不是重點,一筆帶過)① 修改application.properties,添加項目相關信息。
#項目啟動的端口號和IP地址
server.port=9090
eureka.instance.hostname=127.0.0.1
#?是否將其注冊到注冊中心,?如果不是集群環(huán)境,false
eureka.client.register-with-eureka=false
#?是否檢索服務,單機情況下為false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
② 找到項目啟動類,添加@EnableEurekaServer注解
@EnableEurekaServer@SpringBootApplicationpublic?class?EurekaserverApplication?{
public?static?void?main(String[]?args)?{
????SpringApplication.run(EurekaserverApplication.class,?args);
}}
- 添加Dockerfile文件。
FROM?java:8
VOLUME?/tmp
ADD?*.jar?app.jar
EXPOSE?9090
ENTRYPOINT?[?"java",?"-Djava.security.egd=file:/dev/./urandom",?"-jar",?"/app.jar"?]
我們添加了一個VOLUME指向“/ tmp”的內容,因為這是Spring Boot應用程序默認為Tomcat創(chuàng)建工作目錄的地方。效果是在“/var/lib/docker”下的主機上創(chuàng)建一個臨時文件,并將其鏈接到“/ tmp”下的容器。對于我們在此處編寫的簡單應用程序,此步驟是可選的,但如果需要在文件系統(tǒng)中實際編寫,則對于其他Spring Boot應用程序可能是必需的。
為了減少Tomcat的啟動時間,我們添加了一個指向“/dev/urandom”的系統(tǒng)屬性作為熵源。如果您使用Tomcat(或任何其他Web服務器)的“標準”版本,則不需要更新版本的Spring Boot。
maven打包,生成鏡像
使用maven打包。我們在pom.xml中配置過,如果我們是用maven的package,那么就會自動使用Dockerfile文件進行構建。 我們從控制臺可以看到,已經給我構建了一個和我們項目名相同的鏡像文件。我們在docker窗口可以看到,我們的鏡像庫中多個一個eurekaserver:latest鏡像。
創(chuàng)建容器,項目部署到docker
我們在docker窗口中,找到我們剛才創(chuàng)建的鏡像文件,鼠標右鍵,選擇Create container,我們修改創(chuàng)建容器所需要的配置。
在Create Docker Configuration彈窗中修改Container name(容器名稱) Bind ports(Ip和端口映射)我在這里添加127.0.0.1:8080:9090. 使用本地8080端口,去訪問容器的9090.
我們點擊Run之后,就會自動創(chuàng)建容器并啟動。我們可以看到在docker插件中,多出了一個eurekaServer的容器,并且啟動成功,端口號為9090.
訪問容器中的項目我們在前面設置的是使用8080端口,訪問容器9090的項目。我們使用127.0.0.1:8080訪問項目,出現(xiàn)如下頁面,證明項目啟動成功。
在這里我們基本上已經完成了所有的配置。修改項目,一鍵部署
以后,我們啟動項目可以按照下圖所示,一鍵啟動我們項目就會在docker容器中運行。
如果我們修改了項目,在使用在docker插件中啟動項目,會發(fā)現(xiàn)在啟動依然還是修改前的項目,因為我們只是啟動了容器,并沒有將修改后的項目重新打包并生成docker的images。如果我們想在啟動時直接用運行打包并啟動項目可以按照下面的操作。- 我們修改在前面我們創(chuàng)建的Docker Images 的配置。
2.在配置啟動項中找到Before launch:Activate tool window,在這里我們新增一個Run Maven Gold。
3.我們在這里的Command line 中添加一個命令 package。
配置完成后保存。以后我們啟動項目時都會執(zhí)行maven的package命令,自動將我們打包并把項目生成docker鏡像文件啟動。以后,如果我們修改項目后,都可以使用下圖所示去啟動。它會自動打包創(chuàng)建docker鏡像并啟動項目。
如果我們只需要啟動項目,到docker插件窗口,啟動對應項目的容器就可以了。環(huán)境:jdk1.8及以上。、Maven 3.2+參考:-
https://www.cnblogs.com/hsz-csy/p/9488469.html
-
https://spring.io/guides/gs/spring-boot-docker/
推薦閱讀:
Redis隊列實現(xiàn)Java版秒殺系統(tǒng)(無腳本、可用于生產)
手把手教你通過 Docker 部署前后端分離項目(親測可用)
互聯(lián)網初中高級大廠面試題(9個G)
內容包含Java基礎、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊列、高性能緩存、反射、Spring全家桶原理、微服務、Zookeeper......等技術棧!
?戳閱讀原文領?。?/span>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??朕已閱?
![]()
評論
圖片
表情
