我想要的:文档化一个Node.js web应用程序(我在Node.js上)
窗口容器
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" ]
发布于 2019-06-06 17:32:04
我知道原来的问题很老,但由于我最近有类似的问题,无法在一个地方找到好的解决办法,所以我决定分享我在解决这个问题方面的经验。
因此,让我们假设您希望在Windows上运行基于Windows的Docker容器,并在其中使用Node.JS。
以下是您可以选择的选项:
FROM node:latest
让我们假设迁移到基于Linux的容器对您来说不是一种选择。这可能有几个原因(例如,在我的例子中,我试图在基于Linux的Docker容器中将我的角应用程序部署到Windows 10上的本地Azure Service Fabric集群,但它只支持基于Windows的映像)。
在这种情况下,您必须移动到基于Windows的容器,还有两个选项。
下面是一个安装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命令为我的角应用程序(RUN npm install
)安装必需的包,并安装角CLI (RUN npm install -g @angular/cli@latest
),以便能够在容器(...ng serve...
)上运行角形包。
注意,我下载了12.4.0版本的Node.JS (目前最新的稳定版本),您可能希望使用不同的版本。
我希望这是足够清楚,有人会发现这是有用的。
发布于 2020-02-18 17:13:01
通过更改Dockerfile,我能够成功地部署和运行这个文件,如下所示.
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/
发布于 2018-09-18 13:56:39
在Windows 10上使用节点:8构建我的Dockerfile时,遇到了同样的问题。
否则,如果您喜欢使用正式的,尝试切换到Linux容器。
https://stackoverflow.com/questions/49659193
复制相似问题