尝试在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
但这不起作用。有什么想法吗?
答案 0 :(得分:2)
该错误表明存在网络(代理)问题,而不是Fedora问题。
pip
从https://files.pythonhosted.org
中提取。
我发现在遇到问题以尝试识别问题时手动运行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