当前位置: 首页 > 知识库问答 >
问题:

Dockerfile复制保留子目录结构

仲孙向明
2023-03-14

我正在尝试从本地主机将大量文件和文件夹复制到docker映像构建中。

文件如下所示:

folder1
    file1
    file2
folder2
    file1
    file2

我在试着做这样的副本:

COPY files/* /files/

但是,所有文件都放在/files/中,Docker中是否有办法保留子目录结构以及将文件复制到其目录中?

共有3个答案

松烨烨
2023-03-14

要将本地目录合并到映像中的目录,请执行以下操作。它不会删除图像中已存在的文件。它只会添加本地存在的文件,如果已经存在同名文件,则会覆盖图像中的文件。

COPY ./local-path/. /image-path/
李宁
2023-03-14

或者,您可以使用“.”而不是*,因为这将获取工作目录中的所有文件,包括文件夹和子文件夹:

FROM ubuntu
COPY . /
RUN ls -la /
卫逸春
2023-03-14

使用此Dockerfile从副本中删除星号:

FROM ubuntu
COPY files/ /files/
RUN ls -la /files/*

结构如下:

$ docker build .
Sending build context to Docker daemon 5.632 kB
Sending build context to Docker daemon 
Step 0 : FROM ubuntu
 ---> d0955f21bf24
Step 1 : COPY files/ /files/
 ---> 5cc4ae8708a6
Removing intermediate container c6f7f7ec8ccf
Step 2 : RUN ls -la /files/*
 ---> Running in 08ab9a1e042f
/files/folder1:
total 8
drwxr-xr-x 2 root root 4096 May 13 16:04 .
drwxr-xr-x 4 root root 4096 May 13 16:05 ..
-rw-r--r-- 1 root root    0 May 13 16:04 file1
-rw-r--r-- 1 root root    0 May 13 16:04 file2

/files/folder2:
total 8
drwxr-xr-x 2 root root 4096 May 13 16:04 .
drwxr-xr-x 4 root root 4096 May 13 16:05 ..
-rw-r--r-- 1 root root    0 May 13 16:04 file1
-rw-r--r-- 1 root root    0 May 13 16:04 file2
 ---> 03ff0a5d0e4b
Removing intermediate container 08ab9a1e042f
Successfully built 03ff0a5d0e4b
 类似资料:
  • 问题内容: 我正在尝试将多个文件和文件夹从本地主机复制到Docker映像构建中。 这些文件是这样的: 我正在尝试这样制作副本: 但是,所有文件都放在/ files /中,Docker中是否可以保留子目录结构以及将文件复制到其目录中? 问题答案: 使用以下Dockerfile从COPY中删除星号: 结构在那里:

  • 问题内容: 我们有一个表,该表表示与实体(称为项目)关联的值树,其中ParentID列引用行的父级的id列。id列是一个自动递增的IDENTITY列和主键。根节点的ParentID为0。 我们希望能够克隆给定项目的数据,并使生成的ParentID引用复制值的相应新ID,其方式应满足示例中所述的限制。 例如,在下表中复制ProjectID 611的数据: 应导致: 限制: 解决方案必须适用于 SQL

  • 问题内容: 我正在处理备份脚本,并希望压缩文件目录: 这可以压缩它,但是当我解压生成的文件时,它包括完整的文件结构:这些文件位于中。 有没有一种方法可以排除父目录,从而使生成的tar只知道最后一个目录()? 问题答案:

  • 我想建立一个Docker图像,包括我的自定义Powershell模块。因此,我使用Microsofts图像,我想从这里创建我自己的图像,其中包括我的psm1文件。 我想把C:\temp\someDirectory中包含的文件复制到docker linux容器中。在构建映像时,我得到以下错误: C:\temp\docker_posh>docker build--rm-f dockerfile-t d

  • 因此,我正在我的手机上构建一个应用程序,它可以根据我说的内容执行命令,但问题是,您总是需要启动应用程序或按下应用程序中的按钮。 那么有没有办法让它继续听,或者如果我说一个命令词,它就会自动启动,而不需要我做什么?

  • 我正在尝试用不同的名称同步文件夹的两个内容: 我想将的内容复制到远程主机上的,但不复制目录本身。我尝试过类似于,但rsync不支持这一点。 rsync总是创建