调用COPY时,是否可以使用非顶级Dockerfile?

调用COPY时,是否可以使用非顶级Dockerfile?,docker,dockerfile,Docker,Dockerfile,有一个Dockerfile为Elixir/Phoenix应用程序生成版本…树目录结构如下,其中Dockerfile(依赖于此)位于“infra”子文件夹中,需要访问“infra”上一级的所有文件 Dockerfile看起来像: # https://github.com/bitwalker/alpine-elixir FROM bitwalker/alpine-elixir:latest # Set exposed ports EXPOSE 4000 ENV PORT=4000 ENV MIX

有一个Dockerfile为Elixir/Phoenix应用程序生成版本…树目录结构如下,其中Dockerfile(依赖于此)位于“infra”子文件夹中,需要访问“infra”上一级的所有文件

Dockerfile看起来像:

# https://github.com/bitwalker/alpine-elixir
FROM bitwalker/alpine-elixir:latest

# Set exposed ports
EXPOSE 4000
ENV PORT=4000

ENV MIX_ENV=prod
ENV APP_HOME /app
ENV APP_VERSION=0.0.1
COPY ./ ${HOME}
WORKDIR ${HOME}
RUN mix deps.get
RUN mix compile
RUN MIX_ENV=${MIX_ENV} mix distillery.release
RUN echo $HOME
COPY ${HOME}/_build/${MIX_ENV}/rel/my_app/releases/${APP_VERSION}/my_app.tar.gz .
RUN tar -xzvf my_app.tar.gz

USER default

CMD ./bin/my_app foreground
命令“mix destillery.release”在COPY命令指示的路径中构建my_app.tar.gz文件

我在顶级目录(“infra”的父目录)中调用
docker build
,如下所示:

我基本上会在复制时出错:

Step 13/16 : COPY ${HOME}/_build/${MIX_ENV}/rel/my_app/releases/${APP_VERSION}/my_app.tar.gz .
COPY failed: stat /var/lib/docker/tmp/docker-builder246562111/opt/app/_build/prod/rel/my_app/releases/0.0.1/my_app.tar.gz: no such file or directory

我知道COPY命令依赖于“buildcontext”,但我认为在infra的父目录中发出“docker build”意味着我为复制设置了适当的上下文,但显然情况并非如此。有没有办法让Dockerfile位于父目录下一级,其中包含构建Elixir/Phoenix“版本”(my_app.tar.gz和通过命令创建的相关文件)所需的所有文件?我遗漏了什么?

构建上下文中是否有
opt/app/\u build/prod/rel/my\u app/releases/0.0.1
文件夹?所有路径都与生成上下文相关,而不是与主机路径相关。
my_app.tar.gz
是否由
RUN mix…
命令创建?您可能需要
运行cp…
来复制映像树中的文件,而不是
从生成上下文中复制文件。@BMitch-我不确定-有一件事我很困惑-是“docker build”命令中的“.”表示生成上下文被设置为运行“docker build”的当前目录,或者我如何知道“构建上下文”是?@DavidMaze-是的,我的_app.tar.gz是由
运行mix…
创建的。当我运行了
运行cp…
时,它起了作用,所以谢谢!@nona是的,
是当前目录,并作为构建上下文传递。
docker build -t my_app:local -f infra/Dockerfile .
Step 13/16 : COPY ${HOME}/_build/${MIX_ENV}/rel/my_app/releases/${APP_VERSION}/my_app.tar.gz .
COPY failed: stat /var/lib/docker/tmp/docker-builder246562111/opt/app/_build/prod/rel/my_app/releases/0.0.1/my_app.tar.gz: no such file or directory