gpt4 book ai didi

java - Docker Compose OpenJDK - 卷映射不起作用

转载 作者:行者123 更新时间:2023-12-01 17:46:24 25 4
gpt4 key购买 nike

我正在尝试在 docker compose 创建的容器中执行 Java 应用程序。

这是撰写 yaml:

version: "3.7"
services:
randomnum-generator:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
image: randomnum-generator:latest
container_name: java-randomnum-generator

这是 Dockerfile

FROM openjdk:latest
WORKDIR /app/src
RUN javac Main.java
CMD ["java", "Main"]

实际路径 (.) 包含一个“src”文件夹,其中包含 Main.java。当我尝试以这种方式执行它时,收到错误消息“找不到文件:Main.java,用法:javac

我的路径映射有问题吗?

感谢任何帮助,提前致谢。

最佳答案

您的配置存在几个问题。

  1. 编译时未指定sourcepath
  2. 您不需要使用卷来引用您的源/构建工件。
  3. 您不需要 JDK 来运行该应用程序。只需要构建它即可。

假设您有以下文件结构

src/Main.java
Dockerfile
docker-compose.yml

你可以这样做:

Dockerfile:

FROM openjdk:11-jdk AS BUILD
COPY src src
RUN javac -sourcepath src src/Main.java

FROM openjdk:11-jre
COPY --from=BUILD /src/Main.class Main.class
CMD ["java", "Main"]

docker-compose.yml:

version: "3.7"
services:
randomnum-generator:
build: .

注意:如果您的程序由多个文件组成,您可能需要将它们全部包含或构建一个 jar

关于java - Docker Compose OpenJDK - 卷映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60860716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com