将 Verdaccio Registry 与 Skaffold 结合使用

问题描述

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

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

npm 通知 npm 错误代码 E404 npm 错误! 404 未找到 - GET https://registry.npmjs.org/@flashsparkmedia%2fcommon - 未找到 npm 错误! 404 npm 错误! 404 '@flashsparkmedia/common@^1.0.3' 不在 npm 注册表中。 npm 错误! 404 你应该bug作者发布它(或者你自己用这个名字!) npm 错误! 404 npm 错误! 404 请注意,您也可以从 npm 错误! 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 文件,引用 localhost:4873 和一个 _authToken 变量

解决方法

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