Почему Docker COPY работает по-разному с одним файлом и каталогом? - PullRequest
0 голосов
/ 16 октября 2019

У меня есть внешний проект, который включает в себя package.json внутри него (например, представьте create-react-app)

Когда я запускаю команду ниже, все работает без ошибок.

first DockerFile

COPY . develop
WORKDIR develop

Но в случае, если я хочу COPY, package.json следующую команду, я столкнусь с ошибкой.

second DockerFile

COPY package.json develop
WORKDIR develop

ошибкасообщение: Cannot mkdir: /develop is not a directory

Я знаю, как докернизировать мой проект с помощью приведенной ниже команды.

WORKDIR develop
COPY package.json .

Мне просто любопытно узнать, почему первый Dockerfile работает, а второй - нетработа.

Я также использовал RUN ls после команды COPY и выяснил, что в обоих случаях был создан каталог develop.

1 Ответ

2 голосов
/ 16 октября 2019

Это потому, что COPY package.json develop получил указание скопировать package.json в контейнер, когда развернуть . Поэтому следующая директива WORKDIR не выполняется, потому что develop - это не каталог, а файл.

Используйте / до && после , разверните , и оно должно работать.

FROM alpine
COPY temp.txt /develop/
WORKDIR develop
...