我的Dockerfile中包含以下内容:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
...
RUN sed -i "s/%variable%/${variable}/g" app.config
当我在Windows上运行docker build
时,出现以下错误:
---> Running in 2440ba8e74ce
[91m'sed' is not recognized as an internal or external command,
operable program or batch file.
[0mThe command 'cmd /S /C sed -i "s/%nortal_nuget_username%/${nortal_nuget_username}/g" nuget.config' returned a non-zero code: 1
##[error]The process 'C:\Program Files\Docker\docker.exe' failed with exit code 1
在Mac和Ubuntu上运行相同的程序效果很好。谁能告诉我RUN是如何工作的?它是否...以某种方式在cmd中执行了某些事情,因此没有sed
?我认为该命令应该在容器内执行或执行其他操作……对此是否有任何好的文章?
默认情况下,Windows没有sed
。老实说,它没有太多东西。
[如果您感到胆怯,可以尝试安装Windows Subsystem for Linux,然后在其中运行您的构建。您需要重新配置并通过TCP公开Docker,以便Ubuntu docker
命令可以看到它,但是应该可以。
[替代方法是使用类似Vagrant的东西来启动具有sed
命令的建筑环境。