首页 文章

为什么docker在/ python包中看起来很简单?

提问于
浏览
10

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

我有django在docker中运行,内置了web服务器,但是现在我已经修改了requirements.txt以包含uwsgi,我不断收到以下错误消息:

重试(重试(总计= 4,连接=无,读取=无,重定向=无))连接被'NewConnectionError(':无法 Build 新连接:[Errno -2]名称或服务未知'连接后), )':/ simple / uwsgi /

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

1 回答

  • 6

    该错误是由于pip无法到达镜像主机 . 部分 /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进行故障排除 .

相关问题