使用 maven 构建 Docker 映像看不到静态文件



我用Maven构建了一个简单的Java后端。当我用mvn clean install创建.jar文件时,我可以运行它,一切都很好。

然而,当我将其部署到Docker时,服务器会运行,但当我进行GET调用时,后端不会看到位于src/main/resousces/中的静态.png文件。

java.io.FileNotFoundException: /src/main/resources/logo.png (No such file or directory)

图像与.gitlab-ci.yml文件一起上传到docker:

services:
- docker:dind
before_script:
- docker info
maven-build:
stage: build
tags:
- maven3-jdk11
except:
- tags
script:
- mvn deploy -B -U
maven-release:
stage: deploy
tags:
- maven3-jdk11
only:
- tags
script:
- mvn deploy -B -Prelease-profile -Dmaven.javadoc.failOnError=false

(这是我第一次使用Maven和Docker,所以如果我提供的信息不够,请留下评论。(

好吧,我用java ClassLoader解决了它。

最初,我加载了这样的.png文件:

Image logo = new Image(ImageDataFactory.create("src/main/resources/logo.png"));

我把它改成了下面的,现在它就像魅力一样:

ClassLoader classLoader = getClass().getClassLoader();
Image logo = new Image(ImageDataFactory.create(classLoader.getResource("logo.png")));

我接受了尤金的回答以提高他的声誉,他让我朝着正确的方向前进。

打开你的jar文件并检查其中是否有.png文件。如果没有,你需要用resources文件夹打包一个jar。如果是,那么您需要使用类路径指定文件的路径。

最新更新