在dockerfile中复制时如何创建路径?

How to create a path when copying in a dockerfile?

我正在尝试在 php/dockerfile:

中复制一些文件
COPY ./supervisord.conf /etc/supervisor                 #work
COPY ../../config/supervisor/* /etc/supervisor/conf.d   #doesn't work

WORKDIR /home/wwwroot/

正确的路径应该是什么样的?这是我的结构:

|config -> supervisor -> *
|
|docker -> php -> Dockerfile
|              -> supervisord.conf
|

The path must be inside the context of the build; you cannot COPY ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.

https://docs.docker.com/engine/reference/builder/

docker文件有自己目录的context,不能往上走。 这个问题有一些解决方法,例如:

  • 运行 docker build .命令在你想成为上下文的目录上,用-f path/to/Dockerfile

  • 另一个 - 如果您正在使用 docker-compose,您可以将其传递给不同的上下文,例如,如果您的结构如下:

.
├── docker-compose.yml
└── app
   ├── Dockerfile

然后在你的 docker-compose 文件中你可以给它:

services:
  app:
    build:
      context: .
      dockerfile: app/Dockerfile

在这种情况下,docker文件的上下文将是上面的 1 个目录。但这对我来说似乎有点老套。正确的方法是将 docker 文件放在您要复制的文件所在的位置。