gpt4 book ai didi

node.js - Docker + Node.js + Windows

转载 作者:可可西里 更新时间:2023-11-01 09:44:16 29 4
gpt4 key购买 nike

我想要的:将一个 Node.js 网络应用程序 docker 化(我在 Windows 上)

Windows 容器

docker-compose up 给我这个错误:

Service 'webapp' failed to build: no matching manifest for windows/amd64 in the manifest list entries

据我所知,这是因为没有适用于 Windows 的 Node.js 镜像,解决方法是切换到 Linux 容器。

内存不足

当我尝试切换到 Linux 容器时,Docker 告诉我内存不足。通过设置更改分配的内存量并不能解决问题。

编辑:文件

docker-compose

version: '3'

services:
webapp:
build: ./Front
volumes:
- ./Front:./dockerized
ports:
- 5001:8080

Dockerfile:

FROM node:alpine

RUN mkdir -p ../dockerized

WORKDIR ../dockerized

COPY package*.json ../dockerized

RUN npm install

COPY . ../dockerized

EXPOSE 8080
CMD [ "npm", "start" ]

最佳答案

我知道原来的问题已经很老了,但由于我前几天遇到了类似的问题并且无法在一个地方找到好的解决方案,我决定分享我解决这个问题的经验。

那么,假设您想在 Windows 上运行基于 Windows 的 Docker 容器并在其中使用 Node.JS。

以下是您的选择:

  1. 切换到基于 Linux 的 Docker 容器,该容器也可以在 Windows 中运行。docker 文件的第一行可能如下所示:

    FROM Node :最新

让我们假设迁移到基于 Linux 的容器不是您的选择。这可能有多种原因(例如,在我的例子中,我尝试将基于 Linux 的 Docker 容器中的 Angular 应用程序部署到 Windows 10 上的本地 Azure Service Fabric 集群,但它仅支持基于 Windows 的图像)。

在这种情况下,您必须迁移到基于 Windows 的容器,并且还有两个选项。

  1. 使用已安装 Node.JS 的任何基于 Windows 的自定义 Docker 镜像(Kush Grover 建议的选项)

  2. 创建您自己的基于 Windows 的 Docker 镜像并在其中安装 Node.JS。最后一个选项是我最终想到的,因为我不想依赖一些非官方的公共(public)自定义图像。

以下是安装了 Node.JS 的基于 Windows 的 Docker 文件示例:

FROM mcr.microsoft.com/windows/servercore:1803 as installer

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';$ProgressPreference='silentlyContinue';"]

RUN Invoke-WebRequest -OutFile nodejs.zip -UseBasicParsing "https://nodejs.org/dist/v12.4.0/node-v12.4.0-win-x64.zip"; `
Expand-Archive nodejs.zip -DestinationPath C:\; `
Rename-Item "C:\\node-v12.4.0-win-x64" c:\nodejs

FROM mcr.microsoft.com/windows/nanoserver:1803

WORKDIR C:\nodejs
COPY --from=installer C:\nodejs\ .
RUN SETX PATH C:\nodejs
RUN npm config set registry https://registry.npmjs.org/

WORKDIR /app

# install and cache app dependencies
COPY src/WebSpa/package.json /app/src/WebSpa/package.json

WORKDIR /app/src/WebSpa
RUN npm install
RUN npm install -g @angular/cli@latest

# add app
COPY . /app

# start app
CMD cd /app/src/WebSpa && ng serve --host 0.0.0.0

对该文件的简短说明。我使用基于 Windows 的官方镜像(FROM ...servercore:1803...)然后下载 Node.JS 二进制文件(RUN Invoke-WebRequest...)并添加一些需要注册的东西(RUN npm config set registry...)。后来我使用 Node.JS NPM 命令为我的 Angular 应用程序安装所需的包(RUN npm install)并安装 Angular CLI(RUN npm install -g @angular/cli@latest) 以便能够在容器上运行 Angular (...ng serve...)。

请注意,我下载了 12.4.0 版的 Node.JS(目前最新的稳定版),您可能想使用其他版本。

我希望这已经足够清楚并且有人会发现它有用。

关于node.js - Docker + Node.js + Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49659193/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com