为什么docker工人正在寻找/简单的Python包?

我一直试图让Django通过docker容器中的uwsgi运行。

我有Django运行在docker,其内置的Web服务器,但现在我已经修改requirements.txt包括uwsgi,我不断收到以下错误信息:

)连接断开连接后,重试(重试(总= 4,连接=无,读取=无,redirect=无)))NewConnectionError(':无法build立新的连接:[Errno -2] Name or service not known' ':/ simple / uwsgi /

所以看起来像docker使用的PIP包是/simple ,但是这是如何改变? 当我第一次创build容器Django和psycopg得到下载罚款。

我试着指定uwsgi包的完整URL,但是这也不起作用。

泊坞窗,compose.yaml:

 version: '3' services: db: image: postgres web: dns: 8.8.8.8 build: . command: uwsgi --http :8000 --module destExp.wsgi volumes: - .:/code ports: - "8000:8000" depends_on: - db 

Dockerfile:

 FROM python:3.5 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ CMD uwsgi --http :8000 --module destExp.wsgi 

那个错误是由于pip无法到达镜像主机。 Part /simple/uwsgi被用作pip urlpath。

如文档中所述,如果您正在部署到Swarm,则Compose中的DNS行将被忽略。 这里是一个解决方法,使pip使用不同的DNS,只需将Dockerfile中的pip行更新为以下内容:

 RUN echo nameserver 8.8.8.8 > /etc/resolv.conf && pip install -r requirements.txt 

希望有所帮助。 作为一个永久性的解决scheme,您应该研究如何使您的编排使用自定义DNS或从您的案件的容器疑难解答当前的DNS。