我有一个本地NPM/Yarn存储库“verdaccio”在Docker容器中运行,绑定到我的主机http://0.0.0.0:4873/。
我在用米库伯测试斯卡福尔德。
我的Dockerfile配置需要两个构建参数:
ARG NPM_TOKEN
ARG PACKAGE_REPO_DOMAIN
这是用在我的.yarnrc.yml文件:
yarnPath: .yarn/releases/yarn-3.2.0.cjs
nodeLinker: "node-modules"
npmRegistryServer: "http://${PACKAGE_REPO_DOMAIN}:4873/"
httpRetry: 10
httpTimeout: 100000
# networkConcurrency: 2
unsafeHttpWhitelist:
- "0.0.0.0"
- localhost
- verdaccio
- host.minikube.internal
- host.docker.internal
npmRegistries:
"http://${PACKAGE_REPO_DOMAIN}:4873":
npmAlwaysAuth: true
npmAuthToken: ${NPM_TOKEN}
配置的域是host.minikube.internal
。下面是我的skaffold yaml,注意我将network绑定到“host”:
apiVersion: skaffold/v2beta28
kind: Config
build:
local:
push: false
artifacts:
- image: my-app
docker:
dockerfile: ./my-app/Dockerfile
target: dev
network: "host"
buildArgs:
NPM_TOKEN: "***REDACTED***"
PACKAGE_REPO_DOMAIN: "host.minikube.internal"
context: ../
sync:
manual:
- src: 'my-app/**/*.*'
dest: ./my-app
- src: './shared'
dest: './shared'
- src: '.yarn'
dest: '.yarn'
deploy:
helm:
releases:
- name: my-app
chartPath: ../../infrastructure/helm/charts/my-app
artifactOverrides:
image: my-app
imageStrategy:
fqn: {}
当运行skaffold build
时,它可以正常工作并构建映像。但是当运行skaffold dev
或skaffold run
时,yarn install
在构建时挂起。这意味着yarn无法到达verdaccio本地npm存储库。尽管我不明白为什么-它仍然在minikube环境中构建,应该使用host.minikube.internal -〉localhost吗?
NB:我记得在skaffold之前也运行这个(仍然失败):
skaffold config set --global local-cluster true
eval $(minikube -p minikube docker-env)
编辑
此后,我在这里作了一个最低限度的复制:https://github.com/gitn00b1337/skaffold-verdaccio
需要Yarn、迷你库伯和 Helm 。
CD放入项目,然后:
$ sudo chmod -R a+rw ./verdaccio/storage
$ yarn install
$ minikube start
$ docker-compose up (seperate terminal)
$ skaffold config set --kube-context minikube local-cluster true
$ eval $(minikube -p minikube docker-env)
$ skaffold build # works
$ skaffold run # fails
1条答案
按热度按时间jyztefdp1#
在我们的项目中,我们必须做到以下几点才能让verdaccio工作:
添加新用户:
npm adduser --registry http://localhost:4873/
使用以下命令在共享模块和导入模块的服务中创建
.npmrc
文件:使用
yarn build && yarn publish
发布共享模块verdaccio,然后如果导航到,您应该能够在浏览器中看到它http://localhost:4873
然后使用
yarn install <shared-module>
在服务中安装共享模块。我认为您的安装程序挂起的原因是缺少
.nmprc
文件或需要strict-ssl=false
添加后,希望在执行
skaffold run
时它将部署到minikube