我已经如下配置了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上不起作用。
答案 0 :(得分:1)
看到您的/send-verify-email
中的基本问题是
您要设置<userID>/verify-email
,然后dockerfile
在WORKDIR
中说COPY
,因此,如果您设置COPY
,则表示任何/home/app
WORKDIR
,RUN
,CMD
或ADD
命令将在指定的工作目录中执行。
为避免混淆,请尝试以下操作
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