我想创建一个Docker容器,然后写了图像。除了让我感到困惑的COPY命令外,其他所有东西都运行良好。我的Dockerfile:
RUN HOME=/home/ros rosdep update
RUN mkdir -p /home/ros/workspace
# Copy the files
COPY $PWD/src/a_file /home/ros/workspace/src
COPY $PWD/src/b_file /home/ros/workspace/src
a_file
是一个类似于b_file
的目录。当我尝试将这些目录复制到名为/home/ros/workspace/src
的新创建目录中时,我希望a_file
和b_file
都位于/home/ros/workspace/src
中。取而代之的是,我得到另一个src
目录/home/ros/workspace/src/src
),并且a_file
和b_file
的内容都在该目录内。
我在做什么错了?
答案 0 :(得分:1)
如其他答案所述,$PWD
是指图像上下文。
尝试改用.
。
要设置工作目录,请使用WORKDIR
此外,a_file
和b_file
都在src/
中
总而言之,这应该可以工作(未经测试):
FROM <your-base-image>
WORKDIR /home/ros
RUN rosdep update
RUN mkdir -p workspace
# Copy the files
COPY ./src workspace/src
答案 1 :(得分:0)
在Dockerfile中, PWD 变量指的是映像上下文(即,映像内部)。
文件和目录的路径将被解释为相对于构建上下文的源。
如果src
目录位于build context的根目录中,则您的示例为:
...
COPY src/a_file /home/ros/workspace/src
COPY src/b_file /home/ros/workspace/src
...