当前位置: 首页 > 知识库问答 >
问题:

如何将Spring Boot应用程序部署到Docker?

令狐增
2023-03-14

我想第一次使用docker发布我在spring boot中制作的应用程序。然而,在发布时出现了一个问题。

因此,我上传到conter的图像不显示。

以下是我采取的步骤,我将立即添加我使用gradle的步骤。

>

  • 我将Docker插件下载到IntelliJ

    我创建了一个Dockerfile,其中我放了:

    来自openjdk:12-jdk-alpin

    音量 /tmp

    ARG JAR_文件

    复制${JAR_FILE}springreadyapp.jar

    ENTRYPOINT["java","-jar","/springreadyapp.jar"]

    在终端中,我键入以下命令来构建项目:

    chmod 777 gradlew

    ./gradlew干净构建-x测试

    然后我键入(创建图像并显示):

    docker image build-t springreadyapp。

    docker图像

    这就是问题所在,我输入了以下命令:

    docker run-d-p 8081:8081 c7b3be12d247(我想在端口8081上运行,因为我的应用程序监听端口8080。我不知道这是否重要,但我就是这样做的)

    我使用命令显示列表:docker容器ps

    键入docker container ps命令后,没有创建的容器显示给我,我得到一个空列表,键入第一个命令后,我得到日志(一个字符串和数字,可能表示操作成功),但我不知道为什么没有创建容器。

    我还尝试使用命令运行它:

    sudo dockerrun-p 8081:8081 c7b3be12d247,但我得到错误:错误:无效或损坏的jarfile/springreadyapp.jar

    我不知道我做错了什么,它不起作用,我犯了一个错误。还有什么我应该做的吗?一般来说,此时Spring Boot应用程序应该正在运行吗?它看起来是什么样子的,我读了一些教程,但不幸的是没有任何帮助,我正在做与他们一样的方式

  • 共有1个答案

    殳越
    2023-03-14

    您还可以通过在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吗?

     类似资料:
    • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

    • 我有一个Java web应用程序,在我的jar文件中嵌入了Tomcat。我可以用Docker容器化应用程序,并用命令java-jar-myapp.jar运行它,但我不能在Heroku中运行那个容器。我尝试使用heroku CLI进行dockerize和部署,但heroku给了我一个“无法访问jarfile”的错误。 我试图通过使用heroku deploy:jar部署我的fat jar来解决这个问

    • 问题内容: 我刚刚开始学习Docker,并且尝试在Windows上使用boot2docker进行简单设置。我在任何教程或在线示例中都找不到如何使boot2docker VM可访问我的项目文件的方法。 我下载了boot2docker,并成功安装并启动并运行它。我也可以使用SSH并运行hello world docker示例,因此我知道我在VM中安装了有效的Docker。 现在,问题是 :如何在boo

    • 我有带pom的spring boot应用程序。xml 所以,我需要构建war并将其部署到websphere上。但部署后,会出现错误消息: 脚本计数=1048576 ************* 结束显示当前环境 ************* [9/20/18 18:35:17:893 MSK] 00000089 ecs Wcom.ibm.ws.ecs.internal.scan.context.imp

    • 我正试图将一个。NET5项目部署到google app engine上,但当我想用。NET5运行时构建时,它似乎有一个问题。