【发布时间】:2017-08-15 00:40:28
【问题描述】:
我一直在尝试让 django 在 docker 容器中通过 uwsgi 运行。
我在 docker 中运行了 django,它具有内置的 Web 服务器,但现在我已经修改了 requirements.txt 以包含 uwsgi,我不断收到以下错误消息:
连接被“NewConnectionError(”中断后重试(Retry(total=4, connect=None, read=None, redirect=None)):无法建立新连接:[Errno -2] 名称或服务未知',)': /simple/uwsgi/
所以看起来 docker 用于 pip 包的 url 是 /simple,但它是如何改变的?当我第一次创建容器 django 和 psycopg 时下载得很好。
我尝试指定 uwsgi 包的完整 URL,但也没有用。
docker-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
【问题讨论】:
-
您可以尝试在您的 Web 部件中添加
dns: 8.8.8.8吗? -
嗨扎塔。我今天早些时候尝试过,我忘了更新我的问题。仍然没有运气:(
-
docker run -it --rm --dns 8.8.8.8 python:3.5 pip install uwsgi运行成功了吗?对于 Compose 中的 dns 部分,如果您使用 Swarm,则会忽略 v3 中的文档状态dns选项。 -
这里有一个解决方法来确保 dns 可以用于 pip。请将 Dockerfile 中的 pip 行替换为:
RUN echo nameserver 8.8.8.8 > /etc/resolv.conf && pip install -r requirements.txt -
您的
docker run命令成功完成
标签: python-3.x docker pip docker-compose