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..
클라이언트의 요청을 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 ..
키바나를 접속해서 데이터를 생성 수정 삭제를 하려면 계정을 추가 해주어야 한다. 1. 컨테이너에서 생성방법 2. 키바나에서 생성방법 엘라스틱 서치 설정파일에 들어가서 /etc/elasticsearch/elasticsearch.yml xpack.security.enabled: true xpack.security.enabled: true 로 바꾸어준다. 이미 설정 되어있으면 안바꿔줘도 됌. 컨테이너에서 생성방법 유저생성 #엘라스틱서치컨테이너에 접속 docker exec -it 엘라스틱서치컨테이너명 bash #유저추가 elasticsearch-users useradd 유저명 #유저삭제 elasticsearch-users userdel 유저명 비밀번호 설정 후 권한설정 #권한설정 elasticsearch-use..
프로듀서(Producer) 메세지 발행자 / 생성 , 추가 컨슈머Consumer 메세지 수신자 / 조회 브로커(Broker) 카프카 서버 단위 / 데이터를 저장하고 컨슈머에게 전달하는 역활 ex. 카프카 서버 3대있어 = 브로커 3대 클러스터 (Cluster) 카프카서버(브로커)의 그룹 브로커3대로 클러스터 1대 구성 토픽 (Topic) 카테고리 및 주제 데이터(레코즈)들이 보관 될 장소 하나 이상의 파티션으로 존재 파티션(Partition) - 속도 / 병렬처리 토픽의 조각 토픽을 세분화 저장 - 병렬처리 가능하게 함 레플리카(Replica) - 안정성 나눠진 파티션들의 복제본 ( 토픽의 복제본 ) 토픽이 문제가 생길시 복구 가능 파티션과 레플리카가 뭐임 ? 파티션은 토픽의 데이터를 세분화하고 병렬 ..
Check 사항 앞서 작성했던 docker-compose.yml KAFKA_ADVERTISED_LISTENERS( 외부 접속을 담당 ) 에 EXTERNAL IP를 넣어주어야 한다. KAFKA_LISTENERS 는 카프카 내부에서 연결해주는 옵션이니 모든 외부접속을 열어준다. 로컬에 띄었다면 저부분을 localhost로 설정. environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_BROKER_ID: 1 KAFKA_LISTENERS: INTERNAL://:19092,EXTERNAL://:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT KAFKA_ADVERTISE..