Docker 如何将文件复制到外部工作目录
我想将文件复制到工作目录之外的文件夹位置。我在docker文件中使用了以下行,但是当我查看容器时,这些文件不在那里Docker 如何将文件复制到外部工作目录,docker,dockerfile,Docker,Dockerfile,我想将文件复制到工作目录之外的文件夹位置。我在docker文件中使用了以下行,但是当我查看容器时,这些文件不在那里 WORKDIR /app RUN cd ../opt/venv/lib/python3.7/site-packages/xxx/ COPY ./resources/abc.py . 当查看/opt/venv/lib/python3.7/site packages/xxx/位置时,abc.py不存在 我的方法有什么问题?感谢您的投入。您无法从外部获取文件。因此,如果您试图将/op
WORKDIR /app
RUN cd ../opt/venv/lib/python3.7/site-packages/xxx/
COPY ./resources/abc.py .
当查看/opt/venv/lib/python3.7/site packages/xxx/
位置时,abc.py
不存在
我的方法有什么问题?感谢您的投入。您无法从外部获取文件。因此,如果您试图将/opt/venv/lib/python3.7/site packages/xxx/resources/abc.py
复制到docker映像中,而该映像不在您的构建上下文中,则会失败。句号
下面是一些带注释的代码
# change to the /app directory in the container
WORKDIR /app
# run the command cd in the container. cd is a shell builtin, and after
# this command finishes you will still be inside the /app directory in
# your container.
RUN cd ../opt/venv/lib/python3.7/site-packages/xxx/
# Attempt to copy ./resources/abc.py from your host's build context
# (NOT /opt/venv/lib/python3.7/site-packages/xxx/) into the container.
COPY ./resources/abc.py .
基本的解决方法是首先将abc.py
复制到构建目录中。然后,您可以在构建过程中将其复制到docker容器中,如下所示:
WORKDIR /app
COPY abc.py .
# /app/abc.py now exists in your container
cd上的注释
cd
是一种更改shell工作目录的命令。当您在脚本(或者在本例中是dockerRUN
)中执行它时,它只会更改该进程的工作目录,该目录在脚本结束时结束。之后,您的工作目录将是您开始使用的目录。所以你不能用你想用的方式使用它
以这个Dockerfile
为例:
FROM alpine:latest
RUN cd /opt # cd to /opt
RUN pwd # check current directory, you're STILL in '/'
RUN cd /opt && \
pwd # works as expected because you're still in the same process that cd ran in.
# But once you exit this RUN command you will be back in '/'
# Use WORKDIR to set the working directory in a dockerfile
以下是Dockerfile
的建筑输出(删除了嘈杂的docker输出):
据我所知,您试图将文件复制到Docker映像中的特定位置(/opt/venv/lib/python3.7/site packages/xxx/
),该位置位于您在Docker映像文件中定义的WORKDIR
之外
通过在COPY
命令中指定绝对目标路径,可以轻松完成此操作:
WORKDIR /app
COPY ./resources/abc.py /opt/venv/lib/python3.7/site-packages/xxx/abc.py
WORKDIR /app
COPY ./resources/abc.py /opt/venv/lib/python3.7/site-packages/xxx/abc.py