Аутентифицировать частный реестр npm в докере

Мы публикуем js-пакеты с ограниченной областью видимости в частный реестр (управляемый нами с помощью Verdaccio).

Это означает, что в нашей производственной среде нам необходимо пройти аутентификацию в нашем частном реестре, чтобы использовать yarn install. Как это сделать проще всего?

2 ответа

Если вы не можете или не хотите использовать .envфайл, но у вас уже есть .yarnrc.ymlфайл с URL-адресом вашего реестра следующим образом:

      npmScopes:
  yourScopeName:
    npmRegistryServer: 'https://...'

тогда вы можете использовать yarn config setкоманда добавить npmAuthTokenkey со значением вашего токена, например:

      // $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

Тесты

  1. Добавить пакет с ограниченным объемом

    docker-compose run --rm server yarn add @customScope/test-package

  2. Установить

    docker-compose run --rm server yarn install

Другие вопросы по тегам