Использование Dockerfile ARG в инструкции ADD - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь создать dockerfile, который добавляет файлы из каталога сборки в рабочий каталог.

Каталог сборки может отличаться и поэтому должен быть задан аргументом:

ARG BUILD_SOURCE

FROM node:8.11.4

WORKDIR /usr/local/app

ADD "$BUILD_SOURCE" .

Я запустил это с docker build BUILD_SOURCE=bin/bundle ..

Каким-то образом ARG не подставляется, так что в образ добавляется весь текущий каталог.

Когда я жестко кодирую источник сборки, он работает нормально.

Я попытался использовать ENV вместо этого, скопировав arg в env следующим образом:

ENV BUILD_SOURCE $BUILD_SOURCE
ADD "${BUILD_SOURCE}" .

Это тоже не сработало.

В официальном docker документация. Я не могу найти упомянутое поведение.

Кто-нибудь знает, почему это происходит и какой возможный обходной путь будет?

1 Ответ

1 голос
/ 17 марта 2020

Хорошо, я понял.

ARG должен быть помещен ниже оператора FROM, если только он не используется в операторе FROM:

FROM node:8.11.4

ARG BUILD_SOURCE

WORKDIR /usr/local/app

ADD "$BUILD_SOURCE" .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...