如何将文件和文件夹复制到 Dockerfile 中的工作目录?

jus*_*age 3 node.js express docker dockerfile

问题

我有一个具有以下结构的简单节点应用程序:

??? Dockerfile
??? app.js
??? bin
?   ??? www
??? package.json
??? public
?   ??? images
?   ??? stylesheets
??? routes
?   ??? index.js
?   ??? users.js
??? views
    ??? error.hbs
    ??? index.hbs
    ??? layout.hbs
Run Code Online (Sandbox Code Playgroud)

在我的 Dockerfile 中,如何将文件和文件夹复制到与我的主机具有相同文件结构的工作目录中?

也就是说,如果我将工作文件夹的内容作为运行命令列出,它将匹配:

Step 9/11 : RUN ls -la ./
 ---> Running in 15dd5125da65
total 40
drwxr-xr-x    1 root     root          4096 Aug 25 02:58 .
drwxr-xr-x    1 root     root          4096 Aug 25 00:30 ..
-rw-r--r--    1 root     root          2685 Aug 25 02:58 Dockerfile
-rw-r--r--    1 root     root          1256 Aug 25 00:17 app.js
drwxr-xr-x    2 root     root          4096 Aug 25 00:17 bin
drwxr-xr-x   79 root     root          4096 Aug 25 00:30 node_modules
-rw-r--r--    1 root     root           341 Aug 25 00:17 package.json
drwxr-xr-x    4 root     root          4096 Aug 25 00:17 public
drwxr-xr-x    2 root     root          4096 Aug 25 00:17 routes
drwxr-xr-x    2 root     root          4096 Aug 25 00:17 views
Run Code Online (Sandbox Code Playgroud)

jus*_*age 7

解决方案

为了将文件和文件夹复制到工作目录,您可以在 Dockerfile 中使用以下内容:

WORKDIR /working/directory/path
COPY . .
Run Code Online (Sandbox Code Playgroud)

这是更改到工作目录并从主机源复制所有内容的简单方法。

请注意

这将复制源路径中的所有内容——在本地测试时更方便。