首先,使用現在主流的IDE Idea建立一個最簡單的springboot項目。
比如随便帶有一個
@RestController
的
public String test1(){}
的方法。使之可通路即可。
需要一點預備知識,如 linux基本操作、docker安裝及基本操作、docker鏡像位址配置(否則下載下傳會特别慢)、java 或 mvn指令啟動springboot項目等,懂的人自然懂。
兩種方式,第一種方式成功了,有助于了解和運用第二種方式。
第一種,不依賴docker插件,手動部署springboot到docker
思路描述:
- 準備jar檔案(注意必要的yml之類的配置檔案要打包到jar檔案中)
IDEA建立一個springboot項目
産生jar檔案用于釋出
備用
- 在伺服器上安裝docker服務,啟動。
- 将第1步中的jar檔案上傳到伺服器中,然後使用docker指令産生鏡像。
3.1 準備檔案
如下圖,圖中劃線内容是我傳上去的,分别給了
chmod +x xxx
權限。
Docfile内容如下:
FROM java:8
# VOLUME 指定了臨時檔案目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,并連結到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名為app.jar
ADD wtf.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
3.2 然後
docker build生成新的鏡像
docker build -t wtf2 .
注意指令裡有個點.
-
docker啟動此鏡像,指定好端口,同時記得處理伺服器的端口開放問題。
如下圖:docker run -p 8080:8080 wtf2
- 然後直接通路對應接口位址即可。
第二種,依賴docker插件,從IDEA直接将springboot項目部署到docker
這裡面說得不是很詳細,隻要說思路。
不贅述的要點:
- docker 開啟遠端通路。
- idea安裝docker插件,并配置。
- 本地的idea的spring boot簡單項目,可以maven clean,可以package生成 jar 檔案。(同樣地,注意properties或yml等檔案的打包問題)。細節略。
- docker伺服器開始遠端通路,idea安裝docker插件并配置,使idea中可以看到docker伺服器中的image和container。如下圖
- 開始配置此springboot項目中的Dockerfile檔案,特别注意是在根目錄下。我的就是因為層級不對,總是提示找不到檔案的。
- Dockerfile 檔案内容:
FROM java:8
VOLUME /tmp
ADD target/wtf8081.jar wtf8081.jar
ENTRYPOINT ["java","-jar","wtf8081.jar"]
- 然後在此springboot項目的pom.xml檔案的裡面添加如下内容:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<!--将插件綁定在某個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>
<!-- 指定 Dockerfile 路徑 ${project.basedir}:項目根路徑下-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定遠端 docker api位址-->
<dockerHost>http://192.168.182.245: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>
<!-- 以下兩行是為了docker push到DockerHub使用的。 -->
<serverId>docker-hub</serverId>
<registryUrl>https://index.docker.io/v1</registryUrl>
</configuration>
</plugin>
- 項目中啟動項設定為 dockerfile 啟動。如下圖。
- 然後在docker 插件裡,就可以推送檔案、生成鏡像、啟動容器。最終成功釋出。