Невозможно установить требования при сборке изображения docker - PullRequest
1 голос
/ 27 мая 2020

Попытка создать простое приложение Django в Docker, и оно работало на Fedora 31, но не на Fedora 32.

Это мой Dockerfile, довольно простой:

FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY manage.py manage.py
# More COPYs

CMD [ "python" "./manage.py" "runserver" ]

Однако он не работает при запуске установки pip:

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) 
after connection broken by 
'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f6bbfda0280>: 
Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/asgiref/

Я попытался добавить --dns params к docker вот так:

--dns 10.252.252.252 --dns 10.253.253.253 --dns 8.8.8.8

Но это не сработало. Есть идеи?

1 Ответ

2 голосов
/ 27 мая 2020

Ошибка указывает на проблему с сетью (проксирование), а не на проблему Fedora.

pip извлекается из https://files.pythonhosted.org.

  • Можете ли вы пропинговать этот URL-адрес с хоста ?
  • Из контейнера docker на хосте?

Я считаю полезным вручную запускать команды Dockerfile, когда возникают проблемы, чтобы попытаться определить проблему:

docker run --interactive --tty python:3 bash

Затем:

PYPI="$(\
  curl \
  --silent \
  --write-out '%{http_code}\n' \
  --output /dev/null \
  https://files.pythonhosted.org)"
if [ "200" == "${PYPI}" ]
then
  echo "accessible"
else
  echo "inaccessible"
fi

Если вам нужна одна команда:

docker run \
--interactive \
--tty \
python:3 \
  curl \
  --silent \
  --write-out '%{http_code}\n' \
  --output /dev/null \
  https://files.pythonhosted.org

Это должно подтвердить, доступен ли PyPi. Затем внутри контейнера (см. Выше) вы можете использовать что-то вроде следующего, чтобы получить дополнительную информацию о pip install:

pip3 --verbose install flask

ПРИМЕЧАНИЕ замените flask на один из ваших пакетов

...