Npm установка в docker контейнере не может найти мой пользовательский реестр - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь построить приложение реагирования на узле: альпийское изображение, используя docker -compose. Но когда приходит время npm install, оно не работает со следующей ошибкой:

npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://<myCustomRegistry>/packageName failed, reason: getaddrinfo ENOTFOUND <myCustomRegistry>
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-04-03T15_06_13_130Z-debug.log

myCustomRegistry - это имя моего реестра, к которому я обращаюсь через vpn.

Что я пробовал:

  • перезапуск vpn
  • с изменением .npmr c
  • добавление поля dns в docker -compose.yml файл под нужной службой, используя DNS моей компании, который знает myCustomRegistry. Сначала я подумал, что это может быть связано с тем, что docker составные днс не могут знать myCustomRegistry. Возможно, я ошибся, это все еще возможная гипотеза.
  • установка npm прокси (читай do c, но не знаю, что делать)

Документы:

Dockerfile

# Builds the react app into 3 static files
FROM node:alpine as builder
WORKDIR /app
COPY . .
RUN npm i && npm run build

# Copies those static files and serve them
FROM node:alpine
RUN yarn global add serve
WORKDIR /app
COPY --from=builder /app/build .
EXPOSE 80
CMD ["serve", "-p", "80", "-s", "."]

Docker - составьте файл конфигурации:

version: "3.7"
services:

  <... other services>
  front:
    build: ./front
    container_name: dobby_front
    ports: 
      - "8080:80"
    volumes:
      - './front:/app'
      - '/app/node_modules'
    dns:
      - 10.128.103.16
      - 172.21.103.5

.npmr c

registry=https://<myCustomRegistry>
save-exact=true

Спасибо заранее

1 Ответ

1 голос
/ 07 апреля 2020

В конце концов я решил использовать обходной путь. Для тех, кто имеет дело с той же проблемой, это решит проблему ЛОКАЛЬНО. Пожалуйста, убедитесь, что все удаленные серверы, с которыми вы работаете, также настроены таким образом.

Как я понял, в настоящее время невозможно использовать собственный DNS в сборке с использованием docker -compose, он используется только в бегах. Поэтому, чтобы передать пользовательский DNS, вы должны использовать обходной путь и добавить его ко всей глобальной конфигурации.

Go в /etc/docker и отредактировать или создать JSON файл daemon.json, добавив следующее:

{
    "dns": ["<your custom remote dns address here>", "8.8.8.8"]
}

Перезапуск docker и, используя ваш VPN, это должно быть хорошо для go:)

Обратите внимание, что это взлом / обходной путь и ни в коем случае способ хорошая практика для всех. Это не очень хорошо: влияет на всю область действия docker, а не только на область приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...