Проблемы с копированием файла конфигурации в многоэтапной сборке с подстановочным знаком - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть следующий Dockerfile:

FROM golang:alpine AS build
ARG stage
RUN apk update && apk upgrade && \
  apk add --no-cache bash git openssh build-base
ADD . /src
WORKDIR /src
RUN go get -u golang.org/x/vgo
RUN vgo mod init && vgo mod vendor && vgo build -o service

FROM alpine
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
WORKDIR /app
COPY --from=build /src/${stage}-env.yml /app/
COPY --from=build /src/service /app/
RUN ls -la
ENTRYPOINT ./service

Я передаю аргумент stage в моем файле docker-compose, например:

build:
      context: ./run-query
      args:
        stage: latest

Но я 'Я не получаю правильный вывод, переменная ${stage} пуста.

1 Ответ

0 голосов
/ 27 ноября 2018

Ref https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact

Команды FROM поддерживают переменные, которые объявлены любыми инструкциями ARG, встречающимися до первого FROM.

ARG, объявленный до FROM, находится внеэтап сборки, поэтому его нельзя использовать ни в одной инструкции после FROM.Чтобы использовать значение по умолчанию для ARG, объявленного перед первым FROM, используйте инструкцию ARG без значения внутри этапа сборки

Вам необходимо снова объявить ARG stage на втором этапе

FROM alpine
ARG stage
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...