建立Docker映像时无法安装要求

时间:2020-05-27 15:14:57

标签: python docker fedora

尝试在Docker中构建一个简单的Django应用,该应用只能在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参数:

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

但这不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

该错误表明存在网络(代理)问题,而不是Fedora问题。

piphttps://files.pythonhosted.org中提取。

  • 您可以从主机ping通此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