I would like to pass an argument in my dockerfile to build my docker image. I've seen in other post and docker manual how to do this but it doesn't work in my case. Here is an extract of my code where i use my argument:
ARG FirefoxVersion
RUN powershell -Command iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install -y firefox --version $FirefoxVersion --ignore-checksums
I build my image with this command in powershellPrompt :
docker build -t myimage --build-arg FirefoxVersion=61.0.1 .
Finally I have this error :
'$FirefoxVersion' is not a valid version string.
Parameter name: version
The command 'cmd /S /C choco install -y firefox --version $FirefoxVersion -- ignore-checksums' returned a non-zero code: 1
Is someone know what is wrong with my code? Thanks.
As @matt9 suggested
Use $env:FirefoxVersion
in powershell
Use %FirefoxVersion%
in cmd.exe
FROM microsoft/windowsservercore:ltsc2016
ARG FirefoxVersion
#if using powershell
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
RUN Write-Host Powershell: $env:FirefoxVersion
#if using CMD
SHELL ["cmd", "/S", "/C"]
RUN echo cmd.exe: %FirefoxVersion%
Build: docker build -t myimage --build-arg FirefoxVersion=61.0.1 .
Result
Powershell: 61.0.1
cmd.exe: 61.0.1
(This answer is the formalized version of my comment.)
Try to use %FirefoxVersion%
ARG FirefoxVersion
RUN powershell -Command iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install -y firefox --version %FirefoxVersion% --ignore-checksums
The error message "The command 'cmd /S /C choco install ...' returned a non-zero code: 1" indicates that the choco install
command is executed on cmd.exe (Windows' Command Prompt). Dockerfile's ARG
value can be treated as an environment variable. On cmd.exe, %...%
stands for env var.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With