Docker 未找到 COPY 目标路径
Docker COPY destination path not found
我正在尝试将本地存在的源文件复制到使用 docker ARG 命令动态传递的目标路径。
示例 docker文件是:
$ cat mydockerfile
FROM debian:latest
RUN apt update
ENV app_env='prod'
ARG src_app_dir
ARG dest_app_dir
RUN echo ${src_app_dir}
RUN echo ${dest_app_dir}
RUN mkdir /root/${dest_app_dir}
COPY ${src_app_dir}/file.txt /root/${dest_app_dir}/filenew.txt
WORKDIR /
CMD ["bash"]
我正在尝试传递构建参数 dest_app_dir="server_app_dir"
并期待构建过程创建容器路径 /root/server_app_dir/
源文件夹已经存在于我的本地机器上,并且存在 docker-build 上下文。
$ ls -d local_app_dir/
local_app_dir/
$ ls local_app_dir/
file.txt
但我收到以下目标路径错误:
$ docker image build --build-arg src_app_dir="local_app_dir" dest_app_dir="server_app_dir" --tag arg_env:1.0 --file mydockerfile
unable to prepare context: path "dest_app_dir=server_app_dir" not found
它不是那样工作的,还是我错过了 Docker 的正确 concept/usage 构建 ARG 和 COPY 命令?
我在 Windows11 上使用 docker-桌面。
$ docker version
Client: Docker Engine - Community
Cloud integration: v1.0.23
Version: 20.10.14
API version: 1.41
Go version: go1.16.15
Git commit: a224086
Built: Thu Mar 24 01:48:21 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Desktop
Engine:
Version: 20.10.14
API version: 1.41 (minimum version 1.12)
Go version: go1.16.15
Git commit: 87a90dc
Built: Thu Mar 24 01:46:14 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.5.11
GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8
runc:
Version: 1.0.3
GitCommit: v1.0.3-0-gf46b6ba
docker-init:
Version: 0.19.0
GitCommit: de40ad0
您需要指定 build-arg
与参数一样多的次数
docker image build --build-arg src_app_dir="local_app_dir" --build-arg dest_app_dir="server_app_dir" --tag arg_env:1.0 --file mydockerfile .
示例
编辑:忘记添加上下文。谢谢@BMitch
我正在尝试将本地存在的源文件复制到使用 docker ARG 命令动态传递的目标路径。
示例 docker文件是:
$ cat mydockerfile
FROM debian:latest
RUN apt update
ENV app_env='prod'
ARG src_app_dir
ARG dest_app_dir
RUN echo ${src_app_dir}
RUN echo ${dest_app_dir}
RUN mkdir /root/${dest_app_dir}
COPY ${src_app_dir}/file.txt /root/${dest_app_dir}/filenew.txt
WORKDIR /
CMD ["bash"]
我正在尝试传递构建参数 dest_app_dir="server_app_dir"
并期待构建过程创建容器路径 /root/server_app_dir/
源文件夹已经存在于我的本地机器上,并且存在 docker-build 上下文。
$ ls -d local_app_dir/
local_app_dir/
$ ls local_app_dir/
file.txt
但我收到以下目标路径错误:
$ docker image build --build-arg src_app_dir="local_app_dir" dest_app_dir="server_app_dir" --tag arg_env:1.0 --file mydockerfile
unable to prepare context: path "dest_app_dir=server_app_dir" not found
它不是那样工作的,还是我错过了 Docker 的正确 concept/usage 构建 ARG 和 COPY 命令?
我在 Windows11 上使用 docker-桌面。
$ docker version
Client: Docker Engine - Community
Cloud integration: v1.0.23
Version: 20.10.14
API version: 1.41
Go version: go1.16.15
Git commit: a224086
Built: Thu Mar 24 01:48:21 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Desktop
Engine:
Version: 20.10.14
API version: 1.41 (minimum version 1.12)
Go version: go1.16.15
Git commit: 87a90dc
Built: Thu Mar 24 01:46:14 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.5.11
GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8
runc:
Version: 1.0.3
GitCommit: v1.0.3-0-gf46b6ba
docker-init:
Version: 0.19.0
GitCommit: de40ad0
您需要指定 build-arg
与参数一样多的次数
docker image build --build-arg src_app_dir="local_app_dir" --build-arg dest_app_dir="server_app_dir" --tag arg_env:1.0 --file mydockerfile .
示例
编辑:忘记添加上下文。谢谢@BMitch