【问题标题】:How to create a path when copying in a dockerfile? [duplicate]复制 dockerfile 时如何创建路径? [复制]
【发布时间】:2019-09-04 14:09:44
【问题描述】:

我正在尝试在我的 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
|

【问题讨论】:

    标签: php docker dockerfile supervisord


    【解决方案1】:

    路径必须在构建的上下文中;你不能 COPY ../something /something,因为 docker build 的第一步 是将上下文目录(和子目录)发送到docker 守护进程。

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

    dockerfile 有它自己目录的上下文,它不能上去。 这个问题有一些解决方法,例如:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 2019-04-10
      • 2013-05-05
      • 2019-06-08
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多