2017-03-22 29 views
10

Bir docker kabında uwsgi üzerinden çalıştırmak için django almaya çalışıyorum.Neden docker python paketleri için/basit görünümlü?

vardı ama şimdi uwsgi içerecek şekilde requirements.txt modifiye ettik, kendi dahili web sunucusu ile, liman işçisi çalışan, aşağıdaki hata iletisi almaya devam django: (

yeniden deniyor yeniden dene (total = 4, connect = None, read = None, yönlendirme = Yoktur)) 'NewConnectionError (': Yeni bir bağlantı kurulamadı: [Errno -2] İsim veya hizmet bilinmiyor ',)':/basit/uwsgi/

yüzden pip paketleri olduğunu /simple için kullandığı uRL docker gibi görünüyor, ama nasıl değişti? Konteyner ilk oluşturduğumda django ve psycopg iyi indirildi.

uwsgi paketinin tam URL'sini belirtmeyi denedim, ancak bu da işe yaramadı.

liman işçisi-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 
+0

Web bölümünüze 'dns: 8.8.8.8' eklemeyi deneyebilir misiniz? – hurturk

+0

Merhaba zatta. Bunu daha önce denedim, sorumu güncellemeyi unuttum. Yine de hayır şans :( –

+0

Docker run -it --rm --dns var 8.8.8.8 python: 3.5 pip install uwsgi' başarıyla çalıştı? Compose içinde dns bölümü için doc 'dns' seçeneği v3'te yoksayılır Swarm kullanarak – hurturk

cevap

6

O hata nedeniyle pip ayna ana bilgisayara ulaşamamaktadır olduğunu. Parça /simple/uwsgi, pip URL yolu olarak kullanılıyor. doc'da belirtildiği gibi Swarm'a dağıtıyorsanız, V3 belirtimi için Compose'deki DNS satırı yoksayılır. yardımcı olur

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

Hope: Burada basitçe şu şekilde Dockerfile da pip hattını güncellemek, anlık olarak pip kullanımı, farklı DNS yapmak için bir çözümdür. Kalıcı bir çözüm olarak, orkestrasyonunuzun özel DNS'yi nasıl kullanacağını veya durumunuz için kapsayıcıdan geçerli DNS'yi nasıl gidereceğini araştırmalısınız.