所以我有一棵看起来像这样的树:
.
├── 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部署中的映像。
答案 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