首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头+ Node.js + Windows

码头+ Node.js + Windows
EN

Stack Overflow用户
提问于 2018-04-04 19:44:10
回答 4查看 26.8K关注 0票数 19

我想要的:文档化一个Node.js web应用程序(我在Node.js上)

窗口容器

docker-compose up给了我这个错误:

代码语言:javascript
运行
复制
Service 'webapp' failed to build: no matching manifest for windows/amd64 in the manifest list entries

据我所知,这是因为windows没有Node.js映像,解决方法是切换到Linux容器。

内存不足

当我试图切换到linux容器时,Docker告诉我我没有足够的内存。通过设置更改分配的内存量并不能修复它。

编辑:文件

docker-compose

代码语言:javascript
运行
复制
version: '3'

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

Dockerfile

代码语言:javascript
运行
复制
FROM node:alpine

RUN mkdir -p ../dockerized

WORKDIR ../dockerized

COPY package*.json ../dockerized

RUN npm install

COPY . ../dockerized

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

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-06 17:32:04

我知道原来的问题很老,但由于我最近有类似的问题,无法在一个地方找到好的解决办法,所以我决定分享我在解决这个问题方面的经验。

因此,让我们假设您希望在Windows上运行基于Windows的Docker容器,并在其中使用Node.JS。

以下是您可以选择的选项:

  1. 切换到基于Linux的Docker容器,它也可以在Windows中运行。第一行docker文件可能类似于下面一个: FROM node:latest

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

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

  1. 使用任何已安装Node.JS的自定义基于Windows的Docker映像( Kush Grover提出的选项)
  2. 创建自己的基于Windows的Docker映像,并在其中安装Node.JS。这最后一种选择是我最终想出来的,因为我不想依赖于一些非官方的公共定制形象。

下面是一个安装Node.JS的基于Windows的Docker文件的示例:

代码语言:javascript
运行
复制
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命令为我的角应用程序(RUN npm install)安装必需的包,并安装角CLI (RUN npm install -g @angular/cli@latest),以便能够在容器(...ng serve...)上运行角形包。

注意,我下载了12.4.0版本的Node.JS (目前最新的稳定版本),您可能希望使用不同的版本。

我希望这是足够清楚,有人会发现这是有用的。

票数 25
EN

Stack Overflow用户

发布于 2020-02-18 17:13:01

通过更改Dockerfile,我能够成功地部署和运行这个文件,如下所示.

代码语言:javascript
运行
复制
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/
票数 8
EN

Stack Overflow用户

发布于 2018-09-18 13:56:39

在Windows 10上使用节点:8构建我的Dockerfile时,遇到了同样的问题。

否则,如果您喜欢使用正式的,尝试切换到Linux容器。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49659193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档