2017-03-22 11 views
10

Próbowałem uruchomić django przez uwsgi w kontenerze dokowania.Dlaczego docker wygląda/jest prosty w przypadku pakietów Pythona?

Miałem django uruchomiony w docker, z wbudowanym serwerem WWW, ale teraz, że mam zmodyfikowano requirements.txt włączenia uwsgi, wciąż otrzymuję następujący komunikat o błędzie:

ponowną próbą (Retry (total = 4, connect = None, read = None, redirect = None)) po połączeniu zepsuty przez 'NewConnectionError (': Nie można ustanowić nowego połączenia: [Errno -2] Nazwa lub usługa nieznana ",) ':/prosty/uwsgi/

Więc wydaje się, że adres uRL jest dokowanym użyciem pakietów PIP /simple, ale jak to się zmienić? Kiedy po raz pierwszy stworzyłem kontener, django i psycopg zostały pobrane poprawnie.

Próbowałem określając pełny adres URL pakietu uwsgi, ale to też nie działało.

doker-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

Czy możesz spróbować dodać 'dns: 8.8.8.8' w swojej witrynie internetowej? – hurturk

+0

Hi zatta. Próbowałem tego wcześniej, zapomniałem zaktualizować moje pytanie. Nadal nie ma szczęścia :( –

+0

Czy 'docker run -it --rm --dns 8.8.8.8 python: 3.5 instalacja pip uwsgi' działa poprawnie? Część dns w Compose, doc stwierdza opcję' dns' w v3 jest ignorowana, jeśli jesteś za pomocą Swarm. – hurturk

Odpowiedz

6

Błąd ten jest spowodowany PIP nie jest w stanie dotrzeć do hosta lustra. Część /simple/uwsgi jest używana jako ścieżka URL do pip.

Linia DNS w Compose jest ignorowana dla specyfikacji v3, jeśli wdrażasz do Swarm, jak podano w doc. Tutaj jest rozwiązanie, aby pip użyć różnych DNS na chwilę, po prostu zaktualizować swoją linię pip w Dockerfile do następujących:

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

nadzieję, że pomoże. Jako trwałe rozwiązanie powinieneś zbadać, jak sprawić, aby Twoja orkiestracja korzystała z niestandardowego DNS lub rozwiązywać problemy z aktualnym DNSem z kontenera dla twojej sprawy.

Powiązane problemy