【发布时间】:2020-02-28 06:41:30
【问题描述】:
我开始使用 docker,并且正在尝试对我的 Spring boot 应用程序进行 docker 化。我使用 spring initializr 生成了这个。我正在使用 Maven。我的 DockerFile 看起来像这样:
FROM java:8-jdk-alpine
COPY ${JAR_FILE} app.jar
WORKDIR /usr/app
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
这很简单。
我执行了接下来的命令:
docker build -t shortenurl .
我可以在控制台中看到带有 docker 图像的图像:
但是当我尝试使用以下命令运行映像时:docker run -p 8080:8080 shortenurl 我收到以下错误消息:错误:无效或损坏的 jarfile /app.jar
我尝试了不同的配置,但不太确定。有什么建议吗?
谢谢。
这是我的插件 pom.xml 插件部分:
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.2.3</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
这是我在命令后的日志:docker build -t shorturl .
$ docker build -t shortenurl .
Sending build context to Docker daemon 32.89MB
Step 1/5 : FROM java:8-jdk-alpine
---> 3fd9dd82815c
Step 2/5 : COPY ${JAR_FILE} app.jar
---> 248aa4be697d
Step 3/5 : WORKDIR /usr/app
---> Running in 5fcd71c548af
Removing intermediate container 5fcd71c548af
---> bc344b970b11
Step 4/5 : EXPOSE 8080
---> Running in 46b4e4f8e9b7
Removing intermediate container 46b4e4f8e9b7
---> 6b4f55a86a23
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in 838a6052f4c8
Removing intermediate container 838a6052f4c8
---> 7d7d272ea42d
Successfully built 7d7d272ea42d
Successfully tagged shortenurl:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
【问题讨论】:
-
你做了什么来调试这个?例如,如果你在镜像中得到一个调试shell,那么
app.jar文件实际上是在镜像根目录中吗? -
您的
app.jar可能无法执行。你能显示你的pom.xml,特别是spring-boot-maven-plugin吗? -
@HasanCanSaral 我用插件部分编辑了我的问题。
标签: spring-boot docker docker-image