Как мне использовать артефакт Jfrog в Dockerfile для установки npm

Мы используем JFrog Artifactory для пакетов NPM в нашем конвейере CI Jenkins. Я хотел бы загрузить пакеты npm из Artifactory при создании образов докеров в нашем CI для npm ci/npm install шаг, чтобы уменьшить продолжительность процесса сборки докера.

Я попробовал, как показано ниже, скопировав .npmrc файл, который содержит информацию о нашем частном реестре от локального до контейнера докеров, и когда я проверил журналы установки npm, он смог загрузить зависимости из нашего JFrog Artifactory.. Но это небезопасный подход, потому что я не хочу хранить .npmrc в локальный репозиторий и зафиксируйте в VCS.

Что может быть лучшим подходом для этого?

Dockerfile

      FROM node:12.21.0-alpine3.12 AS builder
WORKDIR /usr/src/app
ARG NPM_TOKEN  
ARG NODE_ENVIRONMENT=development
ENV NODE_ENV=$NODE_ENVIRONMENT
COPY package.json /usr/src/app/package.json
COPY package-lock.json* .
COPY .npmrc /usr/src/app/.npmrc
RUN npm ci --loglevel verbose
RUN rm -f .npmrc


FROM node:12.21.0-alpine3.12
WORKDIR /usr/src/app
RUN apk update && apk add curl
COPY --from=builder /usr/src/app /usr/src/app
COPY . .
EXPOSE 50005 9183
CMD [ "npm", "run", "start:docker" ]

.npmrc

      registry=https://artifacts.[company].com/artifactory/api/npm/team-npm-development-virtual
_auth = xxxxxxxxxx
always-auth = true
email = firstname.lastname@company.com

1 ответ

Вы можете хранить свой .npmrc в своей системе контроля версий, если он не содержит запись «_auth».

В azure devops мы используем служебные подключения. На «сборке контейнеров» это было бы невозможно, насколько я знаю.

Таким образом, мой подход будет заключаться в использовании защищенной переменной сборки для хранения учетных данных и внедрения их во время сборки. Прямо перед установкой npm вы можете установить значение «_auth» в .npmrc. Вы можете достичь этого разными способами, но это все.

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