본문 바로가기

PROGRAMING/DOCKER

spring boot 와 docker 그리고 remote debugging

일단 알게 된 내용

docker에   작은 java 이미지를 띄우고 

내 컴퓨터하고 폴더 공유를 한다음에

docker에서   공유된 폴더로 접근한 다음에 

linux docker 이미지에서는    gradle  bootRun을 실행하면  "스프링 부트가 실행될 거라고 본다."

 

이 근거는  cmd창에서  프로젝트 폴더에가서  

윈도우 환경 graldew  bootRun을 하면 spring boot가 커멘드 창에서 실행되고

 

login.jsp 페이지를  메모장에서 열어서 글자를 고치고 화면을 새로고침 하였더니 적용되었다.

그런데 자바 파일에 로그를 넣었는데 자바컴파일이 자동으로 안되네.....

cmd 창을 열어서 

gradlew build --continuous      이걸 해주니 자바파일이 변경되었을때 자동 수정되었다.

gradlew build -t   위에꺼랑 같은거 

///  단점은 junit 부분을 수정해도 계속 컴파일이 되면 junit에서 오류가 나면 오류메시지가 보이는데..

빌드 오류일 분이므로 크게 신경안써도 될것 같다.

 

gradlew bootRun과 gradlew build --continuous를 한번에 하는 방법은 없을까??

와 결국엔 했는데..

docker의 컨테이너가 꺼질때 마다 gradlew 로  연관된 jar을 다시 다운로드 하는 작업이 반복된다...

이것은 아닌데.. 

그리고 내가 생각한것은   공유 폴더를 연결하고

docker에서   gradlew bootRun 하고 이클립스에서 auto build 하면 자동으로 java 가 적용될지 알았는데 아니였다.

그래서 결국 터미널을 열고 gradlew bootRun과  gradlew build -t 를 해주었는데..

이렇게 하고 host에서 이클립스의 java 파일을 수정해도 

gradlew build -t 가 자동으로 실행되는 게 아니라

옛날에    리눅스에서 했던 touch명령어로 변경된 파일을 건드려야..

빌드가 다시 시작되었다..

======================================================>

종합적으로 보았을때 공유폴더를 놓고 작업하는건 아닌것 같다.

====>

차라리 jar을 만들어서 배포하는게 더 나아보인다.

다른 사이트에서 보았던것 처럼 이미지 빌드를 만들어서 배포하면 그때 당시에는 라이브러리도 다 있어질 꺼고

docker에도 저장된 형태로 있을거고(이건 아닐수도있다.)

레이어 단위로 엎어서 나눠치는 다른사이트의 그 내용이 차라리 더 빠를것 같다.

------------------------내 느낌에 결국--------------------------------------

개발은 로컬에서 진행하고 !!!!!

배포를 토커로해서 운영환경과 비슷한  컨테이너에서 테스트를 하고!!

테스트한 컨테이너를 운영에 동일 컨테이너로 올리는 그런 느낌으로 밖에 사용 못할것 같다.

아니면 여러 마이크로 서비스 단위로 나눠있을때 부분적으로 docker 켜놓고 테스트 하고 

하나 개발할것은 로컬로 한다든가.. 이런느낌일까??

------------------------------------------

또하나 docker에서 Portainer라는    오픈소스 웹으로된 docker 관리 툴을 찾았다.

기능은 좋아보이는데  내 컴이 host가 windows여서 그런지 voulm 지정이 잘 안되었다.

윈도우용 docker 툴에서는 볼륨지정은 되었는데 포트 지정이 잘안되었다.

짱났다.

차라리 스프링 부트를 로컬에서 2개 실행하고 개발하는게 나아보였다.

리소스도 docker가 겁마 잡아먹는다.  3G가정도 먹는다. 

 

아직 시기 상조인 듯 하다.....

끝!!!

이걸보면 이아저씨는 리빌드를 계속하고 있다.

아마 spring boot 2.3에서 나온    docker용 빌드 플러그인을 사용하는 듯하다.

결국 소스를 보면

docker로 빌드된 파일을 계속 복사하고 

docker내에서  gradlew bootRun의 영향으로 classpath의 변화를 감지해서 리로딩이 되는 내용이다.

이걸 파자 다음에는!!

'PROGRAMING > DOCKER' 카테고리의 다른 글

docker cli 접근 console. 접근  (0) 2021.04.02
docker 컨테이너 자동실행 만들기 (jenkins)  (0) 2021.04.02
pgadmin4 docker  (0) 2020.09.15
postgresql 설치  (0) 2020.09.15
docker에 대한 생각.  (0) 2020.05.11