aspnetcore - angular 在 docker 容器中通用
aspnetcore - angular universal in a docker container
我正在尝试创建一个 docker 图像,我可以打包一个 aspnetcore2.0/angular- 通用应用程序,由于我的 docker 经验不足,我一直 运行宁成问题。我真的需要一些帮助。
这是docker文件内容:
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN npm cache clean --force
RUN npm install npm@latest
RUN npm install @angular/cli@latest
RUN npm install @ngtools/webpack@next
RUN node -v
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT [ "dotnet", "net-streetStyleCrew.dll" ]
由于 aspnetcore-build:2.0 的版本太旧 npm/node 必须对其进行更新。它没有转到 angular-cli 部分,但我认为当然也需要新鲜。
这是我现在 运行 遇到的麻烦,我不知道如何解决尝试更新时容器内部的网络问题:
Step 5/15 : RUN npm install npm@latest
---> Running in 72531196fc83
npm ERR! Windows_NT 10.0.16299
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "npm@latest"
npm ERR! node v6.13.0
npm ERR! npm v3.10.10
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
npm ERR! Please include the following file with any support request:
npm ERR! C:\app\npm-debug.log
The command 'cmd /S /C npm install npm@latest' returned a non-zero code: 1
我正在尝试 运行 在 windows 容器上进行此操作,因为我对 Linux 也没有太多经验。
我也绝对愿意接受任何可以改进我对基本概念的方法的建议。提前致谢。
首先,我认为具体问题不是 Docker 相关问题。这是一个与网络相关的问题。也许 this SO 线程会有所帮助。
关于您的 Docker 文件:
- 官方最佳实践建议减少层数。每个
RUN
命令创建一个图层。同时,您可能希望有多个 RUN
命令来提高可读性并利用缓存。所以,你需要在两者之间找到平衡。在这种特殊情况下,我认为您应该在单个 RUN
语句中链接 npm
命令。
- 此外,我认为您不应使用
latest
版本,而应指定确切的版本。 latest
将始终在创建图像时下载最新版本,您不知道这个新版本是否存在会破坏您的应用程序的错误。因此,我们的想法是在特定版本中进行测试并在生产中使用相同的版本。如果您想稍后升级到更新的版本,您需要先使用新版本测试您的应用,然后使用新版本更新您的 Docker 文件
这是一个例子
RUN mkdir /home/aus/.npm; \
npm config set prefix /home/aus/.npm; \
npm install --quiet --no-progress -g webpack@3.11.0; \
npm install --quiet --no-progress -g @angular/cli@1.7.2; \
npm install --quiet --no-progress;
我正在尝试创建一个 docker 图像,我可以打包一个 aspnetcore2.0/angular- 通用应用程序,由于我的 docker 经验不足,我一直 运行宁成问题。我真的需要一些帮助。
这是docker文件内容:
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN npm cache clean --force
RUN npm install npm@latest
RUN npm install @angular/cli@latest
RUN npm install @ngtools/webpack@next
RUN node -v
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT [ "dotnet", "net-streetStyleCrew.dll" ]
由于 aspnetcore-build:2.0 的版本太旧 npm/node 必须对其进行更新。它没有转到 angular-cli 部分,但我认为当然也需要新鲜。 这是我现在 运行 遇到的麻烦,我不知道如何解决尝试更新时容器内部的网络问题:
Step 5/15 : RUN npm install npm@latest
---> Running in 72531196fc83
npm ERR! Windows_NT 10.0.16299
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "npm@latest"
npm ERR! node v6.13.0
npm ERR! npm v3.10.10
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
npm ERR! Please include the following file with any support request:
npm ERR! C:\app\npm-debug.log
The command 'cmd /S /C npm install npm@latest' returned a non-zero code: 1
我正在尝试 运行 在 windows 容器上进行此操作,因为我对 Linux 也没有太多经验。
我也绝对愿意接受任何可以改进我对基本概念的方法的建议。提前致谢。
首先,我认为具体问题不是 Docker 相关问题。这是一个与网络相关的问题。也许 this SO 线程会有所帮助。
关于您的 Docker 文件:
- 官方最佳实践建议减少层数。每个
RUN
命令创建一个图层。同时,您可能希望有多个RUN
命令来提高可读性并利用缓存。所以,你需要在两者之间找到平衡。在这种特殊情况下,我认为您应该在单个RUN
语句中链接npm
命令。 - 此外,我认为您不应使用
latest
版本,而应指定确切的版本。latest
将始终在创建图像时下载最新版本,您不知道这个新版本是否存在会破坏您的应用程序的错误。因此,我们的想法是在特定版本中进行测试并在生产中使用相同的版本。如果您想稍后升级到更新的版本,您需要先使用新版本测试您的应用,然后使用新版本更新您的 Docker 文件
这是一个例子
RUN mkdir /home/aus/.npm; \
npm config set prefix /home/aus/.npm; \
npm install --quiet --no-progress -g webpack@3.11.0; \
npm install --quiet --no-progress -g @angular/cli@1.7.2; \
npm install --quiet --no-progress;