Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单个Docker容器中使用.NET核心Web Api将Nuxt.js设置为SPA?_Docker_Docker Compose_Single Page Application_Asp.net Core Webapi_Nuxt.js - Fatal编程技术网

如何在单个Docker容器中使用.NET核心Web Api将Nuxt.js设置为SPA?

如何在单个Docker容器中使用.NET核心Web Api将Nuxt.js设置为SPA?,docker,docker-compose,single-page-application,asp.net-core-webapi,nuxt.js,Docker,Docker Compose,Single Page Application,Asp.net Core Webapi,Nuxt.js,如何创建docker-compose.yml文件,该文件将在1个容器中运行我的Nuxt.js SPA和.NET核心Web API?到目前为止,我已经在docker中使用了Web Api,我可以向它发送命令。但每次我尝试将Nuxt SPA添加到docker-compose.yml时,VisualStudio都会给我一个奇怪的错误(请参阅本文末尾) 这就是我到目前为止所做的: docker compose.yml version: '3.4' services: webapi:

如何创建docker-compose.yml文件,该文件将在1个容器中运行我的Nuxt.js SPA和.NET核心Web API?到目前为止,我已经在docker中使用了Web Api,我可以向它发送命令。但每次我尝试将Nuxt SPA添加到docker-compose.yml时,VisualStudio都会给我一个奇怪的错误(请参阅本文末尾)

这就是我到目前为止所做的:

docker compose.yml

version: '3.4'
services:
    webapi:
        container_name: webapi
        image: projectname/projectname_webapi
        build:
            context: .
            dockerfile: src/WebAPI/Dockerfile
        restart: always
        ports:
          - "5500:80"
        environment:
            ASPNETCORE_ENVIRONMENT: Development 
.Net核心Web API Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
COPY . .
RUN dotnet test

FROM build AS publish
WORKDIR /src/WebAPI
RUN dotnet publish "WebAPI.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebAPI.dll"]
# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 7000
CMD ["nginx", "-g", "daemon off;"]
Nuxt.js SPA Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
COPY . .
RUN dotnet test

FROM build AS publish
WORKDIR /src/WebAPI
RUN dotnet publish "WebAPI.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebAPI.dll"]
# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 7000
CMD ["nginx", "-g", "daemon off;"]
如果将以下内容添加到docker-compose.yml中,则收到的错误:

     webpui:
        container_name: webpui
        image: projectname/projectname_webui
        build:
            context: .
            dockerfile: src/WebUI/Dockerfile
        restart: always
        ports:
            - '7000:7000'
        command: ["npm", "run", "serve"]
错误:

Error   MSB4018 The "GetServiceReferences" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
File name: 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
   at Microsoft.VisualStudio.Containers.Tools.Common.Prerequisites.DockerForWindowsDriveSharingPrerequisite.<EvaluateAsync>d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.VisualStudio.Containers.Tools.Common.Prerequisites.DockerForWindowsDriveSharingPrerequisite.EvaluateAsync(CancellationToken cancellationToken)
   at Microsoft.Docker.Prerequisites.DockerForWindowsDriveSharingPrerequisite.<EvaluateAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Docker.Prerequisites.DockerCompositePrerequisite.<EvaluateAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Docker.BuildTasks.DockerBuildTask.<EvaluateBuildPrerequisitesAsync>d__32.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Docker.BuildTasks.DockerBuildTask.<ExecuteAsync>d__30.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Docker.BuildTasks.DockerBuildTask.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
    docker-compose  C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets  202 

错误MSB4018“GetServiceReferences”任务意外失败。
System.IO.FileNotFoundException:无法加载文件或程序集“Newtonsoft.Json,Version=9.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6eed”或其依赖项之一。系统找不到指定的文件。
文件名:“Newtonsoft.Json,版本=9.0.0.0,区域性=neutral,PublicKeyToken=30ad4fe6b2a6aeed”
在Microsoft.VisualStudio.Containers.Tools.Common.Premissions.DockerForWindowsDriveSharingPremissions.d_u0.MoveNext()中
在System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.启动[TStateMachine](TStateMachine&stateMachine)
位于Microsoft.VisualStudio.Containers.Tools.Common.Premissions.DockerForWindowsDriveSharingPremissions.EvaluateAsync(CancellationToken CancellationToken)
在Microsoft.Docker.Premissions.DockerForWindowsDriveSharingPremissions.d__3.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Docker.Premissions.DockerCompositePrequisite.d_u2.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Docker.BuildTasks.DockerBuildTask.d_u32.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Docker.BuildTasks.DockerBuildTask.d_u30.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Docker.BuildTasks.DockerBuildTask.Execute()中
位于Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ItaskeExecutionHost.Execute()
在Microsoft.Build.BackEnd.TaskBuilder.d_uu26.MoveNext()中
警告:程序集绑定日志记录已关闭。
要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。
注意:程序集绑定失败日志记录会带来一些性能损失。
要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]。
docker compose C:\Program Files(x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Sdk\Microsoft.docker.Sdk\build\Microsoft.VisualStudio.docker.compose.202

非常感谢您的任何建议

上面显示的具体问题是缺少Newtonsoft.Json DLL。搜索以查找解决方案中引用该软件包的项目,并使用NuGet将“Newtonsoft.Json”软件包安装到该项目中。如果安装软件包后仍无法克服该错误,请尝试将该软件包降级到以前的版本,然后将其升级回当前的稳定版本。(这似乎理顺了参考资料。)有关更多信息,请参阅的答案


一旦你越过了这一点,你将能够发现在回答你最初的问题的过程中是否还有其他问题。祝你好运

从docker compose解决方案运行时,我也遇到了这个奇怪的错误。结果表明,这是由于解决方案根目录上的
.editorconfig
导致的。在我删除它之后,构建开始正常工作


如图所示…

我发现Newtonsoft Json 9.0.0.0丢失了错误。我只是删除了docker compose项目并重新阅读了它。不知道具体是什么变化,但它解决了这个问题。

我也遇到了这个问题。你找到解决办法了吗?