Dockerfile 从另一个目录复制 jar 文件

Dockerfile copy jar file from another directory

我有这个 Dockerfile:

FROM openjdk:11
ENV JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

我的应用程序的结构是:

Demo: 
 --deployment:
   --Dockerfile
 --src/
 --docker-compose.yaml
 --target:
   --app.jar

来自 docker-compose 文件的代码片段:

api:
 container_name: backend
 image: backend
 build:
   context: deployment/
 ports:
   - "8080:8080"

当我将 Dockerfile 与 docker-compose 放在同一目录中时,我将 docker compose 更改为:

api:
 container_name: backend
 image: backend
 build: .
 ports:
   - "8080:8080"

是否运行符合预期。但我想将 Dockerfile 放入部署文件夹,因为我有 helm chart 和其他 docker-comopose 文件,它们正在使用这个 Dockerfile。

我的问题是:

如何在 Dockerfile 中指定目标文件夹的正确路径?

您不能复制构建上下文之外的任何内容。如果你想保留当前的项目结构,一个解决方案将在你的 api 服务的撰写文件中:

  build:
    context: .
    dockerfile: deployment/Dockerfile