簡體   English   中英

如何將 Spring 引導應用程序部署到 Docker?

[英]How to deploy Spring Boot Application to Docker?

所以,我上傳到conter的圖像不顯示。

這是我采取的步驟,我將立即補充說我使用了 gradle。

  1. 我將 Docker 插件下載到 IntelliJ
  2. 我創建了一個 Dockerfile 我把:
  1. 在終端中,我輸入了以下命令來構建項目:

  2. 然后我輸入(創建圖像並顯示它):

  3. 這就是問題出現的地方,我輸入了以下命令:

    (我想在端口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 嗎?

嘗試運行:

docker run -p 8081:8081 springreadyapp

我在帶有 spring 的 maven docker中添加了一個指向我的 repo 的鏈接,對此進行了解釋

一個不那么費力的解決方案是在 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 插件構建容器映像並運行它的步驟

  1. 將 jib 插件添加到build.gradle

     plugins { id 'com.google.cloud.tools.jib' version '3.2.1' }
  2. 自定義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. 從命令行構建圖像:

    在項目根目錄下打開命令行

    3.1。 構建圖像壓縮包:

     gradle jibBuildTar

    這會構建並將您的圖像保存到build/jib-image.tar

    3.2. 將圖像壓縮包加載到 docker 中:

     docker load --input build/jib-image.tar
  4. 從命令行將圖像作為容器運行:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM