Google App Engine上的专用节点模块

时间:2016-06-13 00:51:41

标签: node.js google-app-engine npm

如何包含我的node_modules或为私有npm模块指定npm login / auth令牌?

似乎GAE不再允许包含node_modules文件夹(请参阅this issue),并且似乎不允许npm登录或设置令牌。

1 个答案:

答案 0 :(得分:4)

如果在要部署的应用程序中包含本地的.npmrc文件,它将被复制到应用程序源中并在npm安装期间使用。您可以使用构建步骤创建此文件,也可以从主目录中复制该文件。请参阅this npm article

.npmrc文件应如下所示:

//registry.npmjs.org/:_authToken=<token here>

我使用的Dockerfile看起来像这样:

# Use the base App Engine Docker image, based on debian jessie.
FROM gcr.io/google_appengine/base

# Install updates and dependencies
RUN apt-get update -y && apt-get install --no-install-recommends -y -q curl python build-essential git ca-certificates libkrb5-dev && \
    apt-get clean && rm /var/lib/apt/lists/*_*

# Install the latest release of nodejs
RUN mkdir /nodejs && curl https://nodejs.org/dist/v6.2.1/node-v6.2.1-linux-x64.tar.gz | tar xvzf - -C /nodejs --strip-components=1
ENV PATH $PATH:/nodejs/bin

COPY . /app/

WORKDIR /app

# NODE_ENV to production so npm only installs needed dependencies
ENV NODE_ENV production

RUN npm install --unsafe-perm || \
  ((if [ -f npm-debug.log ]; then \
      cat npm-debug.log; \
    fi) && false)

# start
CMD ["npm", "start"]