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
我有这个 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