Wpis z mikrobloga

Mam aplikacje w javie, którą żeby uruchomić po raz pierwszy na nowym środowisku doweloperskim muszę dogrywać różne jary i inne biblioteki. Czy w takiej sytuacji stworzenie obrazu dockerowego z potrzebnymi bibliotekami jest sensowne? Czy środowisko (Intelij Idea) będzie widział, że ma potrzebne biblioteki na obrazie dockerowym? I w końcu czy do takich celów używa się dockera czy może tylko do stworzenia "paczki" i wrzucenia gotowego obrazu na produkcję. Jestem zupełnie zielony w tym temacie.
#programowanie #java #docker
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam aplikacje w javie, którą żeby uruchomić po raz pierwszy na nowym środowisku doweloperskim muszę dogrywać różne jary i inne biblioteki. Czy w takiej sytuacji stworzenie obrazu dockerowego z potrzebnymi bibliotekami jest sensowne?


@Di4bllo: raczej nie, dużo lepiej zarządzać wszystkimi zależnościami za pomocą mavena albo gradle. Docker przydaje się, jak chcesz wrzucić swoją apkę na produkcję, do developmentu w javie docker jest zbyt dużym narzutem, żeby był sens takiej zabawy
  • Odpowiedz
@Saly: dzięki za rozjaśnienie tematu. To jaki jest sens w takim razie sens używania dockera gdy mogę sobie jara/wara wrzucić na serwer i zwyczajnie uruchomić. Jaki jest realny zysk podejścia z użyciem dockera?
  • Odpowiedz
@Di4bllo: nie musisz wrzucac jara/wara/jvma, tylko obraz. Używając dockera nie obchodzi cię w jakiej technologii została napisana, więc masz fajną warstwę "odcinającą" abstrakcję od implementacji. Inne zalety to np. swobodny wybór JVMa, łatwe przycinanie zasobów albo instalowanie innych potrzebnych narzędzi
  • Odpowiedz
legacy aplikacja bez maven/gradle


@Di4bllo: tak czy owak fajnie byłoby zapiąć jakiegoś gradla, żeby projekt developowało się wszędzie tak samo bez ustawiania class pathów w IDE
  • Odpowiedz
@Saly: W praktycznym zastosowaniu gdy mamy aplikację w springu stawia się jeden obraz na aplikację, a drugi na bazę danych. Czy uruchamianie bazy na obrazie mija się z celem?
  • Odpowiedz
@Di4bllo: mowisz o tym samym obrazie czy w osobnym? Nie mam za bardzo doświadczenia z bazami, ale docker na pewno ułatwia używanie baz, zwłaszcza, że duża część z nich robi straszny syf w plikach.
  • Odpowiedz
@Saly: Zupełnie nie mam doświadczenia w tym temacie dlatego wypytuje o różne wariacje, mam rok doświadczenia w javie, ale u nas aplikacja to monolit wrzucana bezpośrednio na serwer klienta
  • Odpowiedz
@Di4bllo: Ogólnie Docker słabo pasuje do legacy javy i WARów. Idea dockera jest taka ze odpalasz 1 proces ze wszystkimi zależnościami(np konkretna wersja JVM). Czyli w kontenerze masz JVM i fat jara z aplikacją i embedded Tomcatem. Spring Boot od niedawna ma nawet gotowy task dla gradle/mavena który buduje obraz Dockerowy w oparciu o buildpacki(https://github.com/paketo-buildpacks/java).
Jest też kilka dobrych praktyk jak pisać aplikacje żeby wygodnie się ich używało w
  • Odpowiedz
@Di4bllo: docker ma duży sens do testów integracyjnych. Np. potrzebujesz na czas testów mieć dostępną bazę danych w danej technologii, broker JMS, serwer ldap, etc. Zapoznaj się z projektem testcontainers.
+ docker-compose jak potrzebujesz sobie postawić ileś mikroserwisów na raz, aby uruchomić aplikację.
  • Odpowiedz
@Di4bllo: docker-compose jest typowo przeznaczony do użytku na jednej maszynie i jest mocno uproszczony. Do developmentu w sam raz. Np. jak potrzebuję sobie uruchomić lokalnie stos elastica, to mogę go uruchamiać, zatrzymywać i kasować korzystając z jednego polecenia.
  • Odpowiedz