问题描述
** 编辑 - 重要细节: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 文件已正确复制到根目录中。问题中的示例已通过更正进行编辑。