Sto lavorando su un servizio in un 'sistema' orchestrato tramite docker-compose. Il servizio è scritto in un linguaggio compilato e ho bisogno di ricostruirlo quando apporto una modifica. Sto cercando di trovare il modo migliore per scorrere rapidamente le modifiche.Flusso di lavoro di sviluppo Docker per componenti compilati in una finestra mobile: comporre il setup
Ho provato 2 "flussi di lavoro", entrambi si basano sull'essere collegati alla directory di origine tramite uno volume:
per ottenere l'ultima fonte.
- far apparire tutti i contenitori di supporto con
docker-compose up -d
- Arrestare il contenitore per il servizio in fase di sviluppo
- eseguire un nuovo contenitore utilizzando l'immagine
docker-compose run --name SERVICE --rm SERVICE /bin/bash
- All'interno di questa corsa contenitore compilare ed eseguire l'applicazione alla porta esposta.
- Riavviare arrestando il processo in esecuzione e quindi ricostruendo.
- (richiede Dockerfile
CMD
per costruire e quindi eseguire il servizio) - Arrestare il servizio:
docker-compose kill SERVICE
- Riavviare il servizio
docker-compose up -d --no-deps SERVICE
Il problema è sia impiegare troppo tempo per riavviare o riavviare il servizio localmente (in esecuzione sul mio portatile in modo indipendente o f docker). Questa configurazione sembra essere ok con linguaggi interpretati che possono hot-ricaricare i file modificati, ma non ho ancora trovato un sistema sufficientemente veloce per servizi linguistici compilati.
La finestra mobile è in esecuzione sul laptop o in remoto? Ti chiedi cosa intendi con "vs riavviare il servizio localmente". Che cosa sta causando il "troppo lungo per riavviarlo"? La compilazione è più lenta? Di partenza? – thaJeztah
Ho cercato di rendere più chiaro questo nella domanda. Docker è in esecuzione tramite docker-machine. Quando dico "in esecuzione a livello locale" intendo la costruzione e l'esecuzione del servizio senza utilizzare la finestra mobile. Questa è un'opzione ma significa che ho bisogno di cambiare cose come l'URL del database ecc. –
Ah, giusto, la mia ipotesi migliore qui è che, prima di tutto, la condivisione dei file tra l'host e la VirtualBox VM è (per dire bene) non molto performante; questa è una limitazione della condivisione di file di VirtualBox. In secondo luogo, la VM potrebbe non essere ottimizzata per le massime prestazioni, il che potrebbe fare la differenza nella durata della compilazione. Hai provato a, ad es. aumentare la quantità di memoria e/o il numero di CPU per la VM? – thaJeztah