[在Windows上构建Linux容器时的Dockerfile RUN机制

问题描述 投票:0回答:1

我的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?我认为该命令应该在容器内执行或执行其他操作……对此是否有任何好的文章?

docker docker-for-windows
1个回答
0
投票

默认情况下,Windows没有sed。老实说,它没有太多东西。

[如果您感到胆怯,可以尝试安装Windows Subsystem for Linux,然后在其中运行您的构建。您需要重新配置并通过TCP公开Docker,以便Ubuntu docker命令可以看到它,但是应该可以。

[替代方法是使用类似Vagrant的东西来启动具有sed命令的建筑环境。

© www.soinside.com 2019 - 2024. All rights reserved.