asp.net - Docker 从一个容器复制到另一个容器

标签 asp.net node.js docker docker-compose dockerfile

我有这个 docker 文件:

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"]

我想将 nodejs 从 c:\Program Files\nodejs on build 复制到 C:\nodejs on final。 但是当我构建它时,我得到了这个错误:

Step 15/19 : copy --from=publish ["C:\Program Files\nodejs", "C:\nodejs"]

ERROR: Service 'myapp.api' failed to build: failed to process "[\"C:\Program": unexpected end of statement while looking for matching double-quote

如何将 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:

尝试双转义:

copy --from=publish ["C:\\\\Program Files\\\\nodejs", "C:\\\\nodejs"]

或考虑为in this Dockerfile替代语法:

copy --from=publish C:\Program Files\nodejs C:\nodejs

但是,aforementioned dockerfile确实使用这两种语法没有任何问题。例如:

COPY --from=SetupPhase ["C:\\Program Files (x86)\\Microsoft SDKs", "C:\\Program Files (x86)\\Microsoft SDKs"]

但是:它确实如此,在 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

(将这些路径替换为您要访问的路径)

这或许可以解释为什么它可以从另一个 Windows 镜像复制:没有访问问题,因为 ACL 已重置。

OP Luka确认:

  1. Add these lines to build

    RUN icacls "C:\\Program Files\\nodejs" /reset /t /c /q 
      RUN attrib -h -r -s "C:\\Program Files\\nodejs" /d /s
    
  2. Edited the copy line in final to this:

    COPY --from=build ["C:\\\\Program Files\\\\nodejs", "/nodejs"]
    

关于asp.net - Docker 从一个容器复制到另一个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48284298/

相关文章:

javascript - 非常大的html页面: Need pointers on implementing a virtual scrolling

node.js - Socket.io 'Cannot connect' 。不同域/端口上的客户端

javascript - MEAN Node JS 在许多请求中请求交互

docker - “Could not find rake-12.3.3 in any of the sources.”

c# - 使用 Asp.Net FileUpload 控件时,上传的文件在保存之前位于何处?

asp.net - "Could not establish trust relationship for the SSL/TLS secure channel."signalr2.2、https、.net 客户端、自定义证书异常

node.js - Azure 部署失败 - 容器未响应端口 : 8080, 上的 HTTP ping,站点启动失败

linux - 在 Redis (Debian GNU) 容器的任何目录中都找不到 shutdown 和 systemctl

mysql - Docker,运行带端口转发的mysql容器一启动就立即停止

asp.net - 如何在dotnetnuke网站中编写global.ascx.cs代码?