Я пытаюсь развернуть свой внутренний сервер с node.js на Windows Server 2016, используя docker.
Я решил использовать образ windowsservercore: последний с iisnode используя Dockerfile из этой ссылки с некоторыми изменениями
# Pull Microsoft/windowsservercore image from Docker's repository
FROM microsoft/windowsservercore:latest
LABEL maintainer.name="myName" \
maintainer.email="myEmail" \
version="1.0.0" \
vendor="myVendor" \
com.myApp.version="1" \
com.myApp.release-date="2018-12-1" \
com.myApp.version.is-production="yes" \
description="app services"
WORKDIR /inetpub/wwwroot
# Copy all web-application's files into our own nodejs-core image being created
COPY . .
# COPY node_modules/webworker-threads \
# C:/Users/Administrator/AppData/Roaming/npm/node_modules/webworker-threads
COPY package*.json ./
# Add Microsoft IIS 10 web-server role to Windows Server Core 2016 image
RUN powershell Add-WindowsFeature Web-Asp-Net45,Web-Http-Tracing,Web-Scripting-Tools,Web-WebSockets;
ARG NODE_VERSION=10.14.1
# Download and pre-install all IIS 10 components required to run Node.js applications
ADD https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-x64.msi node-v${NODE_VERSION}-x64.msi
RUN powershell Start-Process msiexec -ArgumentList '/i node-v${NODE_VERSION}-x64.msi /qn /l*v nodejs.log' -Wait ;
ADD http://go.microsoft.com/fwlink/?LinkID=615137 rewrite_amd64.msi
RUN powershell Start-Process msiexec -ArgumentList '/i rewrite_amd64.msi /qn /l*v rewrite.log' -Wait ;
ADD https://github.com/tjanczuk/iisnode/releases/download/v0.2.21/iisnode-full-v0.2.21-x64.msi iisnode-full-v0.2.21-x64.msi
RUN powershell Start-Process msiexec -ArgumentList '/i iisnode-full-v0.2.21-x64.msi /qn /l*v iisnode.log' -Wait ;
# Install all Node.js modules required to run the web-application
#RUN powershell npm install --global --production npm
RUN powershell npm install --global --production node-gyp
RUN powershell npm --vcc-build-tools-parameters='[""--allWorkloads""]' install --global --production windows-build-tools
# Set the environment variables required by specific Node.js modules to function properly
ENV PATH 'C:\users\Administrator\.windows-build-tools\Python27; \
C:\Program Files(x86)\MSBuild\14.0\bin\;C:\Windows\system32;C:\Windows; \
C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\; \
C:\ProgramFiles\nodejs\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps; \
C:\Users\Administrator\AppData\Roaming\npm;'
ENV PYTHON '%USERPROFILE%\.windows-build-tools\Python27\python.exe'
ENV PYTHONPATH '%USERPROFILE%\.windows-build-tools\python27'
ENV VCTargetsPath "C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\v140"
ENV NODE_PATH "C:\Users\Administrator\AppData\Roaming\npm\node_modules"
# Node.js modules required by the web-application to run
RUN powershell npm install --production
# Expose a TCP-port listened by the web-application
EXPOSE 8080
# Provide a specific entry point for the web-application to run
ENTRYPOINT node.exe ./main.js
Когда я начинаю сборку: он прогрессирует до строки:
RUN powershell npm install --global --production node-gyp
, поскольку npm нераспознал
, хотя я установил node.js на шаге раньше.
Я пытался использовать:
RUN powershell cd "C:\Program Files\nodejs"; npm install --global --production node-gyp
и
RUN powershell cd "C:\Program Files\nodejs\npm" install --global --production node-gyp
и оба дают одинаковую ошибку.