Luk*_*uka 4 asp.net node.js docker dockerfile docker-compose
我有这个泊坞窗文件:
FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
COPY *.sln ./
COPY MyApp.Api/MyApp.Api.csproj MyApp.Api/
RUN dotnet restore
COPY . .
WORKDIR /src/MyApp.Api
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
copy --from=build["C:\Program Files\nodejs", "C:\nodejs"]
RUN SETX PATH "%PATH%;C:\nodejs"
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyApp.Api.dll"]
Run Code Online (Sandbox Code Playgroud)
我想将build 上的 nodejs 从 c:\Program Files\nodejs复制到Final 上的 C:\nodejs。但是当我构建它时,我收到此错误:
步骤15/19:复制 --from=publish ["C:\Program Files\nodejs", "C:\nodejs"]
错误:服务“myapp.api”构建失败:无法处理“[\”C:\ Program”:查找匹配双引号时语句意外结束
如何将 NodeJS 从构建映像复制到最终映像?谢谢
如果copy --from=publish ["C:\\Program Files\\nodejs", "C:\\nodejs"]
给出:
ERROR: Service 'myapp.api' failed to build: COPY failed:
CreateFile \\?\Volume{acdcd1b2-fe0d-11e7-8a8f-10f00533bf2a}\C:Program Filesnodejs:
Run Code Online (Sandbox Code Playgroud)
尝试双重转义:
copy --from=publish ["C:\\\\Program Files\\\\nodejs", "C:\\\\nodejs"]
Run Code Online (Sandbox Code Playgroud)
或者像这个 Dockerfile 中那样考虑替代语法:
copy --from=publish C:\Program Files\nodejs C:\nodejs
Run Code Online (Sandbox Code Playgroud)
但是,前面提到的 dockerfile确实使用了这两种语法,没有任何问题。例如:
COPY --from=SetupPhase ["C:\\Program Files (x86)\\Microsoft SDKs", "C:\\Program Files (x86)\\Microsoft SDKs"]
Run Code Online (Sandbox Code Playgroud)
但是:确实如此,在之前copy --from
:
RUN icacls 'C:\\Program Files (x86)\\WindowsPowerShell\\Modules' /reset /t /c /q
RUN attrib -h -r -s 'C:\\Program Files (x86)\\WindowsPowerShell\\Modules' /s
RUN attrib -h -r -s "C:/Windows" /s
Run Code Online (Sandbox Code Playgroud)
(将这些路径替换为您要访问的路径)
这也许可以解释为什么它可以从另一个 Windows 映像复制:没有访问问题,因为 ACL 已重置。
OP Luka确认:
添加这些行来构建
Run Code Online (Sandbox Code Playgroud)RUN icacls "C:\\Program Files\\nodejs" /reset /t /c /q RUN attrib -h -r -s "C:\\Program Files\\nodejs" /d /s
将 Final 中的复制行编辑为:
Run Code Online (Sandbox Code Playgroud)COPY --from=build ["C:\\\\Program Files\\\\nodejs", "/nodejs"]
归档时间: |
|
查看次数: |
5977 次 |
最近记录: |