[英]How to deploy Spring Boot Application to Docker?
所以,我上傳到conter的圖像不顯示。
這是我采取的步驟,我將立即補充說我使用了 gradle。
在終端中,我輸入了以下命令來構建項目:
然后我輸入(創建圖像並顯示它):
這就是問題出現的地方,我輸入了以下命令:
(我想在端口8081
上運行,因為我的應用程序在端口8080
上偵聽。我不知道這是否重要,但我就是這樣做的)
我使用命令顯示列表: docker container ps
我不知道我做錯了什么,它不起作用,我在哪里犯了錯誤。 還有什么我應該做的嗎? 一般來說,此時的 spring 引導應用程序應該正在運行? 它看起來像什么,我閱讀了一些教程,但不幸的是沒有任何幫助,而且我的做法與他們相同
您還可以通過在 pom.xml 中定義並運行“mvn install”來使用 Maven 插件創建 Docker 映像:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>
${project.groupId}/twitter.to.kafka.service:${project.version}
</name>
</image>
</configuration>
<executions>
<execution>
<!-- Create Docker image during mvn install -->
<phase>install</phase>
<goals>
<!-- Spring Boot use the Layered approach : to prevent creating a single fat jar, and use caching during image update -->
<goal>
build-image
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
你可以試試這個而不是手動創建 Dockerfile 嗎?
一個不那么費力的解決方案是在 GoogleContainerTools 下使用Jib 。 它作為 Gradle 插件提供。
Jib builds optimized Docker and OCI images for your Java applications without a Docker daemon - and without deep mastery of Docker best-practices.
還有其他選項,以下是使用 Jib Gradle 插件構建容器映像並運行它的步驟:
將 jib 插件添加到build.gradle
:
plugins { id 'com.google.cloud.tools.jib' version '3.2.1' }
自定義build.gradle
中的鏡像構建:
由於您的應用程序偵聽端口 8080,因此需要公開容器上的 8080 端口
jib.from { image = <YOUR BASE IMAGE> } jib.container { entrypoint = <YOUR CONTAINER ENTRY POINT> ports = <EXPOSED CONTAINER PORTS. Eg: ['8080']> } jib.to{ image = <OUTPUT IMAGE. Eg: myapp:latest> }
從命令行構建圖像:
在項目根目錄下打開命令行
3.1。 構建圖像壓縮包:
gradle jibBuildTar
這會構建並將您的圖像保存到build/jib-image.tar
3.2. 將圖像壓縮包加載到 docker 中:
docker load --input build/jib-image.tar
從命令行將圖像作為容器運行:
docker run <OUPUT IMAGE> -p <HOST PORT>:<EXPOSED CONTAINER PORT>
例如:
docker run myapp -p 8081:8080
在這里,容器上的8080端口映射到宿主機上的8081端口(你也可以map把它映射到宿主機上的8080端口,容器有自己的IP地址與宿主機分開)。
更多詳細信息可以在jib-gradle-plugin 快速入門中找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.