Расширение переменных в контейнерах Windows

Рассмотрим следующее Dockerfile.

FROM alpine:latest
ARG MY_VAR = "my value"
RUN echo $MY_VAR

При построении контейнера часть вывода — [2/2] RUN echo my value, поэтому переменная $MY_VAR была расширена до значения my value в команде RUN.

Теперь я переключаюсь на контейнер Windows и тому подобное Dockerfile:

FROM mcr.microsoft.com/windows/servercore:ltsc2022
ARG MY_VAR = "my value"
RUN echo $MY_VAR

При сборке контейнера Windows часть вывода — это Step 3/3 : RUN echo $MY_VAR, поэтому переменная не была расширена!

Как включить расширение переменных в контейнерах Windows?

Переменные среды обрабатываются по-разному в Windows, возможно, стоит прочитать: blog.sixeyed.com/…

Josh Bothun 11.05.2022 12:16
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
16
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это работает при использовании нотации пакетного стиля для переменных среды!

FROM mcr.microsoft.com/windows/servercore:ltsc2022
ARG MY_VAR = "my value"
RUN echo %MY_VAR%

Расширение переменных выполняется оболочкой, а контейнеры Windows работают с другой оболочкой, чем контейнеры Linux, поэтому вам необходимо использовать синтаксис оболочки Windows.

Hans Kilian 11.05.2022 12:43

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