Рассмотрим следующее 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?


Это работает при использовании нотации пакетного стиля для переменных среды!
FROM mcr.microsoft.com/windows/servercore:ltsc2022
ARG MY_VAR = "my value"
RUN echo %MY_VAR%
Расширение переменных выполняется оболочкой, а контейнеры Windows работают с другой оболочкой, чем контейнеры Linux, поэтому вам необходимо использовать синтаксис оболочки Windows.
Переменные среды обрабатываются по-разному в Windows, возможно, стоит прочитать: blog.sixeyed.com/…