Аутентифицировать частный реестр npm в докере
Мы публикуем js-пакеты с ограниченной областью видимости в частный реестр (управляемый нами с помощью Verdaccio).
Это означает, что в нашей производственной среде нам необходимо пройти аутентификацию в нашем частном реестре, чтобы использовать
yarn install
. Как это сделать проще всего?
2 ответа
Если вы не можете или не хотите использовать
.env
файл, но у вас уже есть
.yarnrc.yml
файл с URL-адресом вашего реестра следующим образом:
npmScopes:
yourScopeName:
npmRegistryServer: 'https://...'
тогда вы можете использовать
yarn config set
команда добавить
npmAuthToken
key со значением вашего токена, например:
// $REGISTRY_TOKEN is an ARG variable you pass to Docker
ARG REGISTRY_TOKEN
RUN yarn config set 'npmScopes.yourScopeName.npmAuthToken' "$REGISTRY_TOKEN"
Более красивое решение (ИМО)
Перейти на пряжу ягодную (пряжа v2)
Используйте переменные среды в .yarnrc.yml:
yarnPath: ".yarn/releases/yarn-berry.cjs"
nodeLinker: node-modules
npmScopes:
customScope:
npmRegistryServer: ${NPM_REGISTRY}
npmAlwaysAuth: true
npmAuthToken: ${NPM_TOKEN}
Установить значения переменных среды
#docker-compose.yml
version: '3.7'
services:
server:
image: node:14
environment:
NPM_REGISTRY=https://private-registry
NPM_TOKEN=PUT_YOUR_TOKEN_HERE
ports:
- "3000:3000"
volumes:
- .:/var/app
command: "yarn run dev"
Вы также можете поместить переменные env в
.env
файл и добавьте его в
.gitignore
Тесты
Добавить пакет с ограниченным объемом
docker-compose run --rm server yarn add @customScope/test-package
Установить
docker-compose run --rm server yarn install