python-3.x – 为什么docker寻找/简单的python包?

前端之家收集整理的这篇文章主要介绍了python-3.x – 为什么docker寻找/简单的python包?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我一直试图让django通过uwsgi在docker容器中运行.

我已经在Docker中运行了django,内置了Web服务器,但现在我修改了包含uwsgi的require.txt,我收到以下错误消息:

Retrying (Retry(total=4,connect=None,read=None,redirect=None)) after connection broken by ‘NewConnectionError(‘: Failed to establish a new connection: [Errno -2] Name or service not known’,)’: /simple/uwsgi/

所以看起来像url docker是用于pip包是/简单的,但是怎么改变?当我第一次创建容器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 url路径.

如果您正在部署到Swarm,那么Compose中的DNS行将被忽略,如doc所述.这是一个解决方法,可以让pip短暂地使用不同的DNS,只需将Dockerfile中的pip行更新为:

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

希望有帮助.作为永久解决方案,您应该调查如何使您的业务流程使用自定义DNS或从您的案例的容器中排除当前DNS.

猜你在找的Docker相关文章