Docker COPY потерял промежуточный путь

#docker

#docker

Вопрос:

Dockerfile и построить контекстное дерево core-site.xml файлов, относительный путь к файлу conf/etc/hadoop

 .
├── Dockerfile
└── conf
    ├── etc
    │   └── hadoop
    │       └── core-site.xml
    └── xxx.conf
 

Dockerfile(очень простой), как показано ниже

 FROM alpine:latest

RUN mkdir -p /data
WORKDIR /data

COPY conf/* /data/
 

После docker build -t any/any:any . COPY этого список файлов слоя, как показано ниже. Промежуточный путь etc / файла core-site.xml потерян. Куда делся etc / ?

 data/
data/xxx.conf
data/hadoop/
data/hadoop/.wh..wh..opq
data/hadoop/core-site.xml
 

Ответ №1:

Удалите * , чтобы у вас просто COPY conf /data

COPY Команда обрабатывает копирование файлов и каталогов немного по-другому. Ваше COPY утверждение расширяется до

 COPY conf/etc /data/
COPY conf/xxx.conf /data/
 

Первый оператор фактически копирует содержимое conf/etc в /data каталог в контейнере.