Sto cercando di integrare la finestra mobile nel mio flusso di lavoro django e ho tutto pronto tranne un problema davvero fastidioso. Se voglio aggiungere dipendenze al mio file requirements.txt, in pratica, devo solo ricostruire l'intera immagine del contenitore affinché queste dipendenze si incollino.Qual è un buon modo per aggiungere dipendenze python a un contenitore Docker?
Ad esempio, ho seguito l'esempio di docker-comporre per django here. il file YAML è impostato in questo modo:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
e il file Docker utilizzato per costruire il contenitore web è impostato in questo modo:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Così, quando l'immagine è costruita per questo requisiti relativi al serbatoio. txt è installato con qualunque dipendenza ci sia inizialmente.
Se utilizzo questo come ambiente di sviluppo, diventa molto difficile aggiungere nuove dipendenze a quel file requirements.txt perché dovrò ricostruire il contenitore per le modifiche in requirements.txt da installare.
Esiste qualche sorta di best practice nella comunità django per occuparsi di questo? In caso contrario, direi che la finestra mobile è molto utile per il confezionamento di un'app una volta completata, ma non è molto buona da utilizzare come ambiente di sviluppo. Ci vuole molto tempo per ricostruire il contenitore, quindi viene sprecato un sacco di tempo.
Apprezzo qualsiasi intuizione. Grazie.
Sì, buona idea. Potrei semplicemente installare le dipendenze ogni volta che il contenitore si avvia. Ho intenzione di fare un tentativo. –
@SpencerCooley A seconda del numero di dipendenze che si potrebbe desiderare, è necessario che il contenitore abbia quelle che si sa di avere sempre, quindi aggiungere semplicemente la possibilità di aggiungerne altre. Non vorrai che il contenitore impieghi diversi minuti per avviarsi. – 2rs2ts
true, quindi l'immagine di base avrebbe tutte le basi e lo script di avvio installerebbe le dipendenze che sto usando durante il processo di sviluppo, come una sorta di elenco di dipendenze temporanee. Quando sono pronto a spingere tutto fuori posso solo spostare le dipendenze che deciderò sarà permanente per il sistema. A volte sto solo sperimentando con le librerie che non uso. È come un ambiente di sviluppo delle dipendenze. final_requirments.txt temp_requirements.txt –