gpt4 book ai didi

node.js - docker build + 私有(private) NPM(+ 私有(private) docker hub)

转载 作者:IT老高 更新时间:2023-10-28 12:45:36 26 4
gpt4 key购买 nike

我有一个在 Docker 容器中运行的应用程序。它需要来自公司私有(private) NPM 注册表(Sinopia)的一些私有(private)模块,并且访问这些需要用户身份验证。 Dockerfile 是 FROM iojs:latest

我试过了:

1) 在项目根目录中创建一个 .npmrc 文件,这实际上没有区别,npm 似乎忽略了它2) 使用 NPM_CONFIG_REGISTRYNPM_CONFIG_USER 等环境变量,但用户没有登录。

基本上,我似乎无法在 docker build 进程中对用户进行身份验证。我希望有人可能已经遇到过这个问题(这似乎是一个足够明显的问题)并且有解决它的好方法。

(最重要的是,我在 Docker Hub 上使用自动构建(在推送时触发),以便我们的服务器可以使用预构建的镜像访问私有(private) Docker 注册表。)

有没有好的方法:1) 在构建时为 NPM 注入(inject)凭据(因此我不必将凭据提交到我的 Dockerfile)或2)以另一种我没有想到的方式做这件事?

最佳答案

在为您的 node.js/io.js 容器(you/iojs)创建基础镜像时,我发现了一个有点优雅的解决方案:

  1. 使用您要用于 docker 的用户登录到您的私有(private) npm 注册表
  2. 复制生成的 .npmrc 文件

示例.npmrc:

registry=https://npm.mydomain.com/
username=dockerUser
email=docker@mydomain.com
strict-ssl=false
always-auth=true
//npm.mydomain.com/:_authToken="someAuthToken"
  1. 创建一个 Dockerfile 以适本地复制 .npmrc 文件。

这是我的 Dockerfile(基于 iojs:onbuild):

FROM iojs:2.2.1

MAINTAINER YourSelf

# Exclude the NPM cache from the image
VOLUME /root/.npm

# Create the app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Copy npm config
COPY .npmrc /root/.npmrc

# Install app
ONBUILD COPY package.json /usr/src/app/
ONBUILD RUN npm install
ONBUILD COPY . /usr/src/app

# Run
CMD [ "npm", "start" ]
  1. 制作您所有的 node.js/io.js 容器FROM you/iojs,一切顺利。

关于node.js - docker build + 私有(private) NPM(+ 私有(private) docker hub),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30573501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com