【问题标题】:Private node modules on Google App EngineGoogle App Engine 上的私有节点模块
【发布时间】:2016-10-13 07:51:15
【问题描述】:

如何包含我的 node_modules 或为私有 npm 模块指定 npm 登录/身份验证令牌?

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

【问题讨论】:

  • 如何部署?使用 nodejs 运行时?
  • 我使用的是 nodejs 运行时。我最终创建了一个自定义 docker 镜像,它扩展了 GAE 基础镜像,我可以控制 npm install 并为私有节点模块设置 npm 令牌。如果没有人有更好的答案,我今晚会把它变成答案。
  • 这正是我建议你做的:-)

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


【解决方案1】:

如果您在要部署的应用程序本地包含一个 .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"]

【讨论】:

  • 我完成了同样的工作,但使用标准 FROM node:8 - 似乎 App Engine 灵活模式只需要一个 docker 映像,一切都会正常工作。
猜你喜欢
  • 2017-06-29
  • 2014-05-21
  • 2015-03-11
  • 2020-04-05
  • 2017-11-12
  • 2015-04-24
  • 2018-08-05
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多