2017-02-13 2 views
2

Ich habe ein Problem beim Starten eines Django-Projekts in einem Andock-Container. Mein Dockerfile sieht wie folgt aus:Ausführen von Django in docker-compose

FROM python:2.7 
ADD . /code 
WORKDIR /code 
RUN pip install -r requirements.txt 
EXPOSE 8000 

Die requirements.txt besteht aus der einzigen Zeile Django die django erfolgreich zu installieren.

Mein docker-compose.yml hat folgenden Inhalt:

version: '2' 
services: 
    web: 
    build: ./web 
    command: python manage.py runserver 0.0.0.0:8000 
    ports: 
    - "8000:8000" 
    volumes: 
    - ./web:/code 

Um ein Projekt zu erstellen, ich rufe:

docker-compose run web python django-admin.py startproject web . 

, die mit der folgenden Meldung abstürzt:

python: can't open file 'django-admin.py': [Errno 2] No such file or directory 

Auch dieses

Abstürze mit

ERROR: Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"django-admin.py\": executable file not found in $PATH" 

Es scheint mir, dass es ein Fehler in den $PATH, wenn die Behälter wie diese ausgeführt wird. Wenn ich den interaktiven Modus -it verwende, kann ich die django-admin von diesem Ordner aufrufen. Ist die PATH nicht richtig eingestellt oder mache ich hier etwas anderes falsch? Die Dockerfile befindet sich im Verzeichnis web.

Edit: Nach dem Vorschlag im Kommentar, ich versuchte, die django-admin mit dem vollständigen Pfad zu laufen:

[email protected]:/code# which django-admin 
/usr/local/bin/django-admin 

Noch keine Änderung:

docker-compose run web /usr/local/bin/django-admin startproject web . 
ERROR: Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/usr/local/bin/django-admin\": stat /usr/local/bin/django-admin: no such file or directory" 
+0

Warum versuchen Sie nicht, den vollständigen Pfad zu 'django-admin' zu verwenden? –

+0

Danke für den Vorschlag. Immer noch kein Erfolg. Aber wieder das gleiche Verhalten, wenn ich mich auf den Container anmelde, funktioniert es ... – Freddy

+0

Versuchen Sie "django-admin" oder "django-admin.py" auszuführen? – NZD

Antwort

0

Die Antwort ist eigentlich ganz einfach. Ich hatte einen Fehler in meinem Dockerfile, als ich das Projekt zuerst lief. Nach dem Ändern der Dockerfile, docker-compose wurde das Bild nicht automatisch neu erstellt, was ich annahm. Selbst der Wiederaufbau mit docker build hat dies nicht gelöst. Erst nachdem das ganze Bild gelöscht wurde, wurde eine Neuerstellung erzwungen und gab mir das korrekte Ergebnis.

+0

Warum der Downvote? Dies löst mein Problem eindeutig und ich habe beschrieben, wie es geht. – Freddy

+0

IDK, es hat mir geholfen. –

Verwandte Themen