Аргументы сборки не передаются в файл Docker - PullRequest
0 голосов
/ 29 марта 2019

Я хочу построить образ докера. И я бегу

docker build --build-arg project_file_name=account.jar -t account:1.0 .

Файл Docker выглядит так (# 1)

FROM anapsix/alpine-java:8u172b11_server-jre

ARG project_file_name

MAINTAINER jim
COPY src/${project_file_name} /home/${project_file_name}
CMD java -jar /home/${project_file_name}

Если жестко закодировать переменную, она будет выглядеть так (# 2)

FROM anapsix/alpine-java:8u172b11_server-jre

MAINTAINER jim
enter code here
COPY src/account.jar /home/account.jar
CMD java -jar /home/account.jar

После того, как я построю изображение с # 1 и # 2

Используя # 1, когда я запускаю Docker, Docker сообщает мне, что не может найти указанный файл JAR

Используя # 2, когда я запускаю docker, docker может правильно выполнить файл java jar.

Для меня и № 1, и № 2 одинаковы. Просто # 1 использует переменную build-arg, а # 2 жестко кодирует значение. Я считаю, что способ, которым я использую build-args, неверен. Кто-нибудь может мне помочь?

Привет

1 Ответ

1 голос
/ 29 марта 2019

Работающий контейнер не будет иметь доступа к значению переменной ARG. Для этого вам потребуется переменная ENV.Хотя вы можете использовать переменную ARG для установки переменной ENV.В вашей ситуации вы можете сделать

FROM anapsix/alpine-java:8u172b11_server-jre
ARG project_file_name
ENV PROJECT_FILE=${project_file_name}

MAINTAINER jim
COPY src/${project_file_name} /home/${project_file_name}
CMD java -jar /home/${PROJECT_FILE}

Вы можете прочитать больше здесь

...