Próbuję zintegrować doker z moim przepływem pracy django i mam wszystko skonfigurowane z wyjątkiem jednego naprawdę irytującego problemu. Jeśli chcę dodać zależności do mojego pliku requirements.txt, muszę po prostu odbudować cały obraz kontenera, aby te zależności się utrzymały.Jaki jest dobry sposób dodawania zależności Pythona do kontenera Docker?
Na przykład poszedłem za przykładem dokera-komponowania dla django here. plik yaml jest skonfigurowany tak:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
a plik Docker wykorzystane do budowy kontenera WWW jest skonfigurowany tak:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Więc gdy obraz jest zbudowany na tej wymagań kontenerowych. txt jest instalowany z wszystkimi zależnościami, które są na nim początkowo.
Jeśli używam tego jako środowiska programistycznego, bardzo trudno jest dodać nowe zależności do pliku requirements.txt, ponieważ będę musiał przebudować kontener, aby zmiany w pliku requirements.txt zostały zainstalowane.
Czy istnieje jakaś dobra praktyka w społeczności django, aby sobie z tym poradzić? Jeśli nie, powiedziałbym, że docker wygląda bardzo ładnie, aby upakować aplikację po jej ukończeniu, ale nie jest zbyt dobry do użycia jako środowisko programistyczne. Zbudowanie kontenera zajmuje dużo czasu, więc marnuje się dużo czasu.
Doceniam każdy wgląd. Dzięki.
Tak, dobry pomysł. Mogę po prostu mieć to zainstalowanie zależności przy każdym uruchomieniu kontenera. Mam zamiar spróbować. –
@SpencerCooley W zależności od tego, ile masz zależności, możesz chcieć, aby kontener miał te, które wiesz, że zawsze będziesz miał, a następnie po prostu dodaj możliwość dodawania kolejnych. Nie chciałbyś, aby kontener potrzebował kilku minut na uruchomienie. – 2rs2ts
prawda, więc obraz podstawowy miałby wszystkie podstawy, a skrypt startowy instalowałby zależności, których używam podczas procesu tworzenia, jak rodzaj tymczasowej listy zależności. Kiedy jestem gotowy, aby to wszystko wypchnąć, mogę po prostu przejść przez zależności, które zdecyduję, będą trwałe dla systemu. Czasami eksperymentuję z bibliotekami, których nie używam. To jest jak środowisko deweloperów zależnych. final_requirments.txt temp_requirements.txt –