Sto cercando di iniziare con Docker per lo sviluppo di un'applicazione Web con Clojure e non sono sicuro su quale direzione andare. Da quello che ho letto finora e anche guardando the offical Docker Clojure repo, ci sono fondamentalmente due modi possibili:Flusso di lavoro di sviluppo per una webapp Clojure con Docker
- chiamata
lein ring server
(interattivo o come CMD in un Dockerfile) o - utilizzare un Dockerfile per compilare la vostra applicazione in un uberjar e utilizzare
java -jar
comeCMD
nel file jar risultante.
Il primo mi sembra essere problematico, nel senso che l'ambiente dev non è il più vicino possibile l'ambiente di produzione, dato che stiamo probabilmente utilizzando un profilo :dev
Leiningen aggiungendo roba che non si sarebbe strettamente vuole in produzione (fornendo pochi strumenti e "informazioni", cioè il codice su un server di produzione esposto è sempre una buona idea). Quest'ultimo, tuttavia, sembra avere il problema esattamente opposto: ora ogni modifica richiede fondamentalmente una ricostruzione dell'immagine (si pensi al ciclo di modifica della compilazione), quindi si perderebbe la ricompilazione della funzione lein ring
sulla funzionalità di modifica.
In che modo le persone utilizzano questa combinazione in pratica?
PS: Sono consapevole che potrebbero esserci alcune altre modalità operative in pratica (ad esempio utilizzando Immutant o Tomcat come target di distribuzione o utilizzando un server CI come Hudson ecc.). Sto chiedendo la configurazione di base prima qui.