** 编辑 - 重要细节: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