Передача переменных среды по этапам в многоступенчатом образе докера

У меня есть образ докера с 4 нижними слоями.

Я хочу уменьшить размер моего текущего слоя изображения, используя многоступенчатый режим, но это приводит к потере свойств конфигурации среды, порта и cmd на всех этапах. Есть ли способ передать такие переменные конфигурации через этапы вDockerfile.

1 ответ

Вы можете сделать одно из следующих

Используйте базовый контейнер и установите там значения среды

FROM alpine:latest as base
ARG version_default
ENV version=$version_default

FROM base
RUN echo ${version}

FROM base
RUN echo ${version}

Другой способ - использовать ARGSкак показано ниже. Есть некоторые повторения, но они становятся более централизованными

ARG version_default=v1

FROM alpine:latest as base1
ARG version_default
ENV version=$version_default
RUN echo ${version}
RUN echo ${version_default}

FROM alpine:latest as base2
ARG version_default
RUN echo ${version_default}

Примеры заметок скопированы с https://github.com/moby/moby/issues/37345

Другие вопросы по тегам