전체 글

imSoo TecBlog
1. Jar 생성 build -> boo.Jar 로 Jar파일을 생성해준다. boot.jar 실행하면 /build/libs/ 안에 프로젝트이름-0.0.1-SNAPSHOT.Jar 파일이 생성된다. 2. Dockerfile 만들기 FROM openjdk:17-alpine ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar COPY ./config/application.properties /src/main/resources/ ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.config.location=file:/src/main/resources/application.properties"] FROM : Docker Image 생성 시에 기반이..
우선 집에 공유기가 있다면 공유기 포트를 열어주어야 한다. 80포트를 아까 설정해주었던 nginx http 포트인 12122 로 포워딩 시켜주는 것이다. 여기서 집에 공유기가 있다면 공유기 포트를 열어주어야 한다. 80 으로 들어올 것을 12122(docker nginx컨테이너 80포트)로 포트포워딩 시키고 443 으로 들어올 것을 12121(docker nginx컨테이너 443포트)로 포트포워딩 시킨다. 위 내용을 글로 해석해 보면 80포트로 들어오는것을 Nas의 12122 포트로 12122는 컨테이너 > 80 포트로 보내준다. 이 부분이 굉장히 헷깔린다. 컨테이너 설치가 완료 됐다면 Nginx Proxy Manager (설정페이지) 웹브라우저에 NAS의 IP:관리포트 를 넣어준다. 위 설정대로라면 N..
Nginx의 역방향 프록시의 개념은 이러하다. 원래라면 http://myHomeIp.synology:dockerPort 로 kibana , CMAK , Jenkins 홈을 GUI를 사용했는데 이젠 NginX를 통해 컨테이너에 접근하고 Https 보안까지 가능해진 것이다. Jenkins와 GitHub의 WebHook 또한 Https 프로토콜을 이용해야 했기 때문에 NginX는 필수 적이었다. Jenkins 와 Github WebHook 을 연동하려고 하는데 Github에서 https로 웹훅을 요청 하는데 Nas에서는 Http로 설정 되어있어서 NginX로 리버스 프록시를 사용한 주소가 필요했다. 필자는 Synology 의 NAS를 사용하지만 일반 docker 사용자도 똑같이 따라하면 된다. docker-c..
jenkins contextLoads() FAILEDjava.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:142        Caused by: org.springframework.beans.factory.BeanCreationException at AutowiredAnnotationBeanPostProcessor.java:488            Caused by: java.lang.IllegalArgumentException at PropertyPlaceholderHelper.java:180TakeItEasyApplicationTests > contextLoads() FAILED java.lang.Illeg..
현재 프로젝트(스프링부트3.0)를 진행 하던 중 젠킨스를 통한 CI/CD를 구축하던 중에 젠킨스는 java11만 지원하는것을 알고 17로 업그레이드를 해줘야 하는 상황이 왔다. 스프링부트 3.0은 자바 17부터 지원한다. JDK17 로 Jenkins 변경 .. version: '3.8' services: jenkins: image: jenkins/jenkins:lts-jdk17 container_name: jenkins environment: - TZ=Asia/Seoul user: root privileged: true ports: - 8080:8080 - 50000:50000 volumes: - /volume1/docker/jenkins:/var/jenkins_home - /var/run/docker...
클라이언트의 요청을 Dispatcher Servlet에 전달Dispatcher Servlet 요청한 url에 맞는 controller 가 있는지 Handler Mapping이 검색Handler Mapping에서 해당 controller에 처리 요청controller에서 처리 결과를 Handler Adapter 를 통해 ModelAndView 객체로 변환하여 Dispatcher Servlet에 전달Dispatcher Servlet에서 전달받은 ModelAndView 객체를 이용하여 매핑되는 View를 View Resolver검색View Resolver에서 처리 결과를 View에 전달처리결과가 포함된 View를 Dispatcher Servlet에 전달Dispatcher Servlet에서 최종 응답 결과를 클..
Index 인덱스란 뭘까 ?데이터베이스 인덱스는 추가 쓰기 및 저장 공간을 희생 하여 테이블에 대한 데이터 검색 작업의 속도를 향상시키는 데이터 구조입니다 .(DB에서 검색이 이루어 질땐 컴퓨터는 처음부터 끝까지 모든 데이터를 검색한다.)JPA에서 Index를 설정한다는 것은대부분 단일 테이블에서 선택한 데이터 열을 복사하여 만들어 놓는다. 어떤 엔티티를 대상으로 사용해야 할까 ?* 중복도가 낮은 것 !주민번호 / 중복이 낮다. 성별 / 중복이 매우 높다.  같이 남 / 여 두가지만 존재하여 여러값들이 중복이 많은 데이터는 피해야 한다 ! * 크기가 큰 테이블 인덱스 설정 @Index @Target({})@Retention(RUNTIME)public @interface Index { String ..
문제 로컬 -> 로컬(도커) -> 외부서버 스프링 -> 카프카 -> ELK 구성하던 중 스프링과 카프카는 둘 다 로컬에 있으니 localhost:xxxx를 사용하면 되는줄 알았다. 로컬 환경에서 실행되는 스프링 애플리케이션은 도커의 내부 네트워크 주소에 직접 접근할 수 없으므로, 외부 주소를 사용해야합니다. 따라서 스프링 애플리케이션의 bootstrap.servers 설정은 localhost가 아니라 로컬 머신의 IP 주소(외부접속주소)로 설정되어야 합니다. 이러고 외부 주소만 쓰면 될 줄 알았는데 공유기 포트 포워딩도 해주어야 됏다. 정리 Check List 도커 (외부접속으로 간주) 로컬 -> 도커 - 외부접속 설정 ( ip:port ) 공유기설정창 -> 도커IP로 포트포워딩
imSoo
sudoSoooooo