我在让站点在 docker 容器内正常运行时遇到问题。容器构建良好并运行,但是当导航到页面时,它在加载 JavaScript 服务时失败。
这是 Dockerfile
FROM microsoft/aspnetcore-build:2.0 AS builder
WORKDIR /app
ADD company_cas.pem /usr/local/share/ca-certificates/company_cas.crt
RUN update-ca-certificates
COPY company_cas.pem ./
RUN npm config set cafile company_cas.pem
# Run NPM install for dependencies
COPY package.json ./
RUN npm install
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=builder /app/out .
ENTRYPOINT ["dotnet", "web.dll"]
我使用的是microsoft/aspnetcore-build:2.0
基础映像,并且 npm 确实运行,因此据我所知安装了 Node。
失败请求的输出为 -
fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0]
web | An unhandled exception has occurred: Failed to start Node process. To resolve this:.
web |
web | [1] Ensure that Node.js is installed and can be found in one of the PATH directories.
web | Current PATH enviroment variable is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
web | Make sure the Node executable is in one of those directories, or update your PATH.
web |
web | [2] See the InnerException for further details of the cause.
web | System.InvalidOperationException: Failed to start Node process. To resolve this:.
web |
web | [1] Ensure that Node.js is installed and can be found in one of the PATH directories.
web | Current PATH enviroment variable is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
web | Make sure the Node executable is in one of those directories, or update your PATH.
web |
web | [2] See the InnerException for further details of the cause. ---> System.ComponentModel.Win32Exception: No such file or directory
完整错误堆栈@
粘贴这是为 ASP.NET 设置新的路径以查找节点的问题吗?如果是这样,关于 Docker 中这条道路应该是什么的想法吗?
我想我忽略了运行时映像库容器。
改成FROM microsoft/aspnetcore-build:2.0
,现在我很好。