如何将文件夹从dockerfile的父文件夹复制到workdir

时间:2019-12-17 19:22:15

标签: docker

所以我有一棵看起来像这样的树:

.
├── README.md
├── dataloader
│   ├── Dockerfile
...
│   ├── log.py
│   ├── logo.py
│   ├── processors
...
│   └── tests
├── datastore
│   ├── datastore.py

,数据加载器应用程序内部的Dockerfile如下所示:

FROM python:3.7

WORKDIR /var/dsys-2uid-dataloader

  COPY assertions/ ./assertions/
  COPY events/ ./events/
  COPY processors/ ./processors/
  COPY requirements.txt ./
<*>COPY datastore/ ./datastore/
  COPY *.py ./

RUN pip3 install -r requirements.txt

ENTRYPOINT ["python", "dataloader.py"]

带星号的行不起作用,因为数据存储文件夹位于Dockerfile的父级中。该怎么办?我需要这个Dockerfile是正确的,因为它将被用作kubernetes部署中的映像。

1 个答案:

答案 0 :(得分:3)

您无法在构建上下文之外访问文件,但可以“欺骗”泊坞窗使其位于其他构建上下文中。

只需从根目录(您有自述文件和目录)运行docker build -t foo -f dataloader/Dockerfile .

$ tree
.
├── bar
│   └── wii
└── foo
    └── Dockerfile

2 directories, 2 files

$ cat foo/Dockerfile
FROM ubuntu
COPY bar/wii .

$ docker build -t test -f foo/Dockerfile .
Sending build context to Docker daemon  3.584kB
Step 1/2 : FROM ubuntu
 ---> cf0f3ca922e0
Step 2/2 : COPY bar/wii .
 ---> c3ff3f652b4d
Successfully built c3ff3f652b4d
Successfully tagged test:latest