Próbuję zacząć pracę z Dockerem w celu opracowania aplikacji internetowej z Clojure i nie jestem pewien, w którą stronę pójść. Z tego co czytałem do tej pory, a także patrząc na the offical Docker Clojure repo, istnieją zasadniczo dwa sposoby:Przepływ pracy dla aplikacji webowej Clojure z Dockerem
- połączeń
lein ring server
(interaktywnie lub jako CMD w Dockerfile) lub - użyć Dockerfile skompilować aplikację do pliku uberjar i użyj
java -jar
jakoCMD
w wynikowym pliku JAR.
Były wydaje mi się być problematyczne w tym sensie, że środowisko dev nie jest tak blisko, jak to możliwe, aby w środowisku produkcyjnym, biorąc pod uwagę, że jesteśmy prawdopodobnie przy użyciu profilu :dev
Leiningen dodając rzeczy, że jeden nie będzie ściśle chcieć w produkcji (dostarczając jak najmniej narzędzi i "informacji", tzn. kod na wyeksponowanym serwerze produkcyjnym jest zawsze dobrym pomysłem). Wydaje się jednak, że ten drugi problem jest dokładnie odwrotny: teraz każda zmiana wymaga w zasadzie przebudowania obrazu (pomyśl o cyklu edycji-kompilacji), więc straciłbyś przyjemną kompilację podczas modyfikacji.
W jaki sposób ludzie stosują tę kombinację w praktyce?
PS: Jestem świadomy, że mogą istnieć inne tryby działania w praktyce (np. Użycie Immutant lub Tomcat jako celu wdrożenia lub użycie serwera CI takiego jak Hudson itp.). Pytam najpierw o najbardziej podstawową konfigurację.