【发布时间】:2017-10-31 06:57:17
【问题描述】:
我正在使用以下 Dockerfile 为我的 Node.js 应用程序构建一个 docker docker 映像:
FROM keymetrics/pm2:latest
RUN apk add --no-cache --update alpine-sdk python
# Bundle APP files
COPY package.json .
# Install app dependencies
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install
RUN npm rebuild bcrypt --build-from-source
COPY . .
# Show current folder structure in logs
RUN ls -al
EXPOSE 3000
VOLUME /app/uploads
CMD [ "pm2-docker", "start", "pm2.json" ]
问题是node_modules 文件夹不存在于从此映像创建的 docker 容器中,因此应用程序遇到错误将无法运行。
我的.dockerignore 文件中有node_modules,但由于我在构建过程中安装了必要的包(RUN npm install),所以这不会导致问题。
【问题讨论】:
-
也许问题在于
COPY . .会覆盖npm install已安装的所有内容?尝试将COPY package.json .替换为COPY . .,因为您的package.json也应使用此命令进行复制。 -
@vfsoraki 并非如此。我已尝试将
COPY . .部分注释掉,但node_modules仍然缺失。 -
一次性运行 npm,类似于
RUN npm install && npm rebuild bcrypt --build-from-source -
@user2915097 也不起作用。
标签: node.js docker dockerfile npm-install