0

编辑以提供 MRE:

重现的步骤(现在使用 Docker CLI 进行重现)

project_directory
   Dockerfile
   directory_to_cd_into
      gradlew

Dockerfile:

From debian:9

RUN cd /directory_to_cd_into
# also tried RUN cd ./directory_to_cd_into

运行docker build产量/bin/sh: 1: cd: can't cd to /directory_to_cd_into

所以问题是cd——这意味着我必须遗漏一些关于容器目录结构的基本知识。

也试过WORKDIR

很高兴添加更多信息。


原来的:

在我的容器中,我可以使用 grade 成功构建,如下所示:

cd directory/with/gradlew && chmod +x gradlew && ./gradlew build

但是当我把它放在我的 Dockerfile 中并尝试构建容器时,它会因为“文件或目录 gradlew 不存在”而失败:

RUN cd directory/with/gradlew && chmod +x gradlew && ./gradlew build.

从这个问题,Unable to change directory while building docker Image using Dockerfile,我知道cd每条RUN语句都会重置——但我是在一个RUN.

RUN语句之前的所有内容都保持不变,即,如果我注释掉 RUN,并从图像中的命令行交互式构建,它构建得很好。

如果重要的话,我会在 GitHub 代码空间内完成所有这些工作;我没有直接使用 Docker CLI。

我究竟做错了什么?

--

编辑: 我必须尝试cd从构建上下文之外包含/目录。我不确定如何解决这个问题——也许用COPY?

4

0 回答 0