0

** 编辑 - 重要细节:verdaccio 也在 docker 容器中运行。问题似乎是容器到容器的通信。我将 npm 注册表设置为 localhost,但我认为它正在尝试连接到容器上下文中的 localhost,而不是容器主机。

我正在尝试从在 localhost 上运行的 Verdaccio 注册表安装包,但不确定如何更改 skaffold 配置或 dockerfile 以将注册表从 npmjs 更改为 Verdaccio。我收到的 404 错误如下:

npm 通知 npm 错误!代码 E404 npm 错误!404 未找到 - 获取https://registry.npmjs.org/@flashsparkmedia%2fcommon - 未找到 npm 错误!404 npm 错误!404 '@flashsparkmedia/common@^1.0.3' 不在 npm 注册表中。npm 错误!404 你应该让作者发布它(或自己使用名称!)npm ERR!404 npm 错误!404 请注意,您也可以从 npm ERR 安装!404 tarball、文件夹、http url 或 git url。

这是我的 dockerfile 和 skaffold.yaml 供参考:

apiVersion: skaffold/v2beta4
kind: Config
deploy:
    kubectl:
        manifests:
            - ./infra/k8s/*
build:
    local:
        push: false
    artifacts:
        - image: flashsparkmedia/auth
          context: auth
          docker:
              dockerfile: Dockerfile
              network: host
          sync:
              manual:
                  - src: 'src/**/*.ts'
                    dest: .
        - image: flashsparkmedia/client
          context: client
          docker:
              dockerfile: Dockerfile
          sync:
              manual:
                  - src: '**/*.js'
                    dest: .

FROM node:alpine

WORKDIR /app
ARG NPM_TOKEN
COPY .npmrc .
COPY package.json .
RUN npm install --only-prod 
RUN rm -f .npmrc

COPY . .
CMD npm start

我在根目录中还有一个 .npmrc 文件,它使用 _authToken 变量引用 localhost:4873

4

1 回答 1

0

解决了。将 'docker' 下的 'network' 字段添加到我在 artifacts 数组中的图像中,并确保 .npmrc 文件已正确复制到根目录中。问题中的示例已通过更正进行编辑。

于 2021-01-10T01:07:16.713 回答