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

问题描述 投票:1回答:1

这个问题在这里已有答案:

我试着在我的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 supervisor
1个回答
0
投票

路径必须位于构建的上下文中;你不能COPY ../something / something,因为docker构建的第一步是将上下文目录(和子目录)发送到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个目录。但这对我来说似乎有些苛刻。正确的方法是将dockerfile放在您尝试复制的文件所在的位置。

© www.soinside.com 2019 - 2024. All rights reserved.