运行docker映像时出现FileNotFoundException

时间:2020-05-25 17:03:51

标签: java docker dockerfile

我已经如下配置了Firebase属性文件-

@Bean
Firestore firestore() throws IOException {
    InputStream serviceAccount = new FileInputStream("my-karwaan-firebase-adminsdk.json");
    GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount);

JSON文件位于资源文件夹下。

在localhost上一切正常。 但是在docker上,它在运行docker image时会抛出

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[com.google.cloud.firestore.Firestore]: Factory method 'firestore' threw exception; nested
 exception is java.io.FileNotFoundException: my-karwaan-firebase-adminsdk.json

Docker文件内容如下-

# Build Jar File
FROM maven:3.6.3-jdk-8-slim as stage1
WORKDIR /home/app
COPY . /home/app
RUN mvn -f /home/app/pom.xml clean package

# Create an Image
FROM openjdk:8-jdk-alpine
EXPOSE 8080
COPY --from=stage1 /home/app/target/myapp.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar"]

我试图给出一个绝对路径,但是在docker上不起作用。

目录结构如下- enter image description here

1 个答案:

答案 0 :(得分:1)

看到您的/send-verify-email中的基本问题是

您要设置<userID>/verify-email,然后dockerfileWORKDIR中说COPY,因此,如果您设置COPY,则表示任何/home/app WORKDIRRUNCMDADD命令将在指定的工作目录中执行。

enter image description here

为避免混淆,请尝试以下操作

COPY

尝试一下:)

PS: 启动容器后,请执行ENTRYPOINT并检查所有项目详细信息是否在正确的目录中,并且# Build Jar File FROM maven:3.6.3-jdk-8-slim as stage1 WORKDIR /home/app #COPY FROM PROJECT ROOT DIR TO WORKING ROOT DIR i.e: /home/app COPY . . RUN mvn -f /home/app/pom.xml clean package # Create an Image FROM openjdk:8-jdk-alpine EXPOSE 8080 COPY --from=stage1 /home/app/target/myapp.jar myapp.jar ENTRYPOINT ["java", "-jar", "myapp.jar"] 正在使用正确的名称构建jar