Я изучаю микросервисы с докером и кубернетом по простому проекту, теперь я пытаюсь использовать локальный реестр, установленный как контейнер докера с рулем. Я опубликовал свой пакет/библиотеку в своем локальном реестре (я использую verdaccio) и успешно установил его в свой текущий проект с помощью команды npm install @mycompany/mylibs --registry=http://localhost:4873. Моя проблема в том, что когда я пытаюсь развернуть свой проект в kubernetes через скаффолд, мне не удается загрузить пакеты из конфигурационного файла package.json. Я пробовал как настроить файл .npmrc в корневую папку проекта, так и реестр по умолчанию в файле verdaccio conf, но все терпит неудачу. Может кто сталкивался с такой же проблемой как у меня и как ее решить. Кто-нибудь, помогите пожалуйста. Спасибо
Это моя структура проекта:
MyProject
|-auth (this service has dependency to @mycompany/mylibs)
| |-src
| |-Dockerfile
| |-package.json
|
|-infra/kube
| |-auth-depl.yaml
| |-ingress-srv.yaml
MySharedLibrary
| |-src
| |-package.json
package.json авторизации:
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node-dev src/index.ts",
"test": "jest --watchAll --no-cache"
},
"jest": {
"preset": "ts-jest",
"testEnvironment": "node",
"setupFilesAfterEnv": [
"./src/test/setup.ts"
]
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@mycompany/mylibs": "^1.0.3",
"@types/cookie-session": "^2.0.42",
"@types/express": "^4.17.9",
"@types/jsonwebtoken": "^8.5.0",
"cookie-session": "^1.4.0",
"express": "^4.17.1",
"express-async-errors": "^3.1.1",
"express-validator": "^6.7.0",
"jsonwebtoken": "^8.5.1",
"mariadb": "^2.5.1",
"mysql2": "^2.2.5",
"sequelize": "^6.3.5",
"ts-node-dev": "^1.0.0",
"typescript": "^4.1.2"
},
"devDependencies": {
"@types/jest": "^26.0.19",
"@types/supertest": "^2.0.10",
"jest": "^26.6.3",
"supertest": "^6.0.1",
"ts-jest": "^26.4.4"
}
}
Я использую:
ПК с Windows 10 в качестве основного хоста для докера и место размещения проекта.
версия докера 19.03.13
нпм версии 6.14.6
версия 4.12.0
руль 3.5.3
леса 1.13.0
Сообщение об ошибке после развертывания моего проекта с помощью skaffold dev
:
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@mycompany%2fmylibs - Not found
npm ERR! 404
npm ERR! 404 '@mycompany/mylibs@^1.0.3' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 It was specified as a dependency of 'app'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
Я хочу, чтобы в процессе развертывания каждый контейнер мог найти все необходимые зависимости в локальном реестре (http://localhost:4873), а когда он не смог их найти, он должен попытаться получить общедоступный npm (https://Registration.npmjs.org или npmjs.com).