본문 바로가기
728x90

전체 글247

[240128] docker + nginx 무중단배포 구축하기 기존에는 코드가 수정되면 CI/CD를 통해 도커 이미지가 올라가게 되고, EC2 서버에서 해당 이미지를 컨테이너로 실행하여 배포를 진행해야 했다. 이 과정에서는 코드가 수정될 때마다 수정 내용을 반영하기 위해 중간에 서버를 멈추고 다시 시작해줘야 한다는 문제점이 발생한다. 사용자 테스트를 앞두고 서버가 중간에 멈추는 일을 방지하기 위해서 무중단 배포를 구축하고자 했다. Nginx - Nginx는 웹 서버로서의 역할을 하며, 백엔드 서버에 대한 요청을 받아 이를 처리하는 역할을 합니다. 무중단 배포를 위해 새로운 버전의 애플리케이션을 배포할 때 이전 버전과 새로운 버전을 함께 관리할 수 있으며, 요청이 들어오면 새로운 버전이 완전히 배포될 때까지 이전 버전으로 요청을 전달할 수 있습니다. - Reverse.. 2024. 1. 28.
[240118] userDetails null 오류 프로젝트를 진행하던 중에 게시글 전체를 조회하는 api에서도 UserDetailsImpl을 통해 사용자 정보를 받아올 필요성이 생겼다. 하지만 해당 api에서 가져온 userDetails가 null값인 오류가 발생하였다. UserDetailsImpl을 추가하게 된 BoardController API 코드 // Best 게시글 조회 @GetMapping("/best") public String getBestBoards(Model model, @AuthenticationPrincipal UserDetailsImpl userDetails) { BoardBestListGetRes bestBoards = boardService.getBoardBestList(); model.addAttribute("bestBoar.. 2024. 1. 18.
[240117] ec2 서버 실행 ec2 서버에서 ci/cd로 올린 docker 이미지를 pull 받아 제대로 실행되는지 확인해보고자 한다. 그 전에 ec2 서버에 docker와 redis를 설치하였다. 환경변수 설정 일단 첫 번째로 발생한 문제는 환경변수를 설정해줘야 한다는 것이었다. ci/cd에서는 깃허브의 secrets에 환경변수 값을 넣어둔 application-prod.yml 파일을 올려둔 후 prod 환경에서 프로그램을 실행하였다. 하지만 ec2에서 실행하니 다시 환경변수를 넣어주는 방법에 대해 고민하게 되었다. 그래서 해결한 방법은 환경변수를 저장한 [프로젝트명].env 파일을 ec2 서버에 저장하여 docker image를 실행할 때 설정해주는 것이었다. 1. ec2서버의 ./[프로젝트명].env 파일을 생성한다. 2. 해.. 2024. 1. 17.
[240114] AWS, docker로 수동 배포하기 CD를 구축하기 전에 먼저 배포 과정을 익히기 위해서 수동 배포를 해보려고 한다. 지난번에 AWS RDB와 EC2를 만들었고 그 이후 과정부터 진행하고자 한다. gradle 빌드하여 jar 파일 생성 인텔리제이에서 스프링 부트 프로그램을 빌드하여 build > libs > [프로젝트명]-0.0.1-SANPSHOT.jar 파일을 생성한다. 터미널에서 해당 파일이 있는 곳으로 이동 후 java -jar [프로젝트명]-0.0.1-SNAPSHOT.jar으로 프로그램이 잘 실행되는지 확인한다. jar 파일로 이미지를 생성하여 도커허브에 push jar파일이 있는 위치에 Dockerfile을 생성한다. FROM openjdk:17 COPY Sappun-0.0.1-SNAPSHOT.jar app.jar ENTRYPOI.. 2024. 1. 15.
[240113] MapStruct unmapped 오류 수정 이번 프로젝트에서 객체와 dto간의 변환을 위해 MapStruct를 사용하였다. 생성자를 이용하여 변환해주는 방법이 있지만 새로운 라이브러리를 활용하고 익숙해지는 연습을 하고, 코드를 더 깔끔하게 작성하여 가독성을 높이기 위해 적용해보았다. 그러던 중 게시글 관련 기능을 개발하던 중에 오류 메세지를 마주하게 되었다. 에러 메세지: nickname 필드를 매핑하지 못하고 있다. Unmapped target property: "nickname". Mapping from property "Board reportBoard.board" to "BoardGetRes reportBoardGetRes.board". Unmapped target property: "nickname". Mapping from Collect.. 2024. 1. 13.
[240111] Docker image, Docker container Docker Image 라이브러리, 종속성에 대한 정의, 코드가 포함되어 있는 실행되지 않은 OS 파일 컨테이너 런타임에 필요한 바이너리, 라이브러리 및 설정 값 등을 포함 변경되는 상태값을 보유하지 않고 변하지 않음(stateless, immutable, read-only) 상태 저장 없음(Stateless): 다른 환경에서도 동일한 애플리케이션을 실행 가능 불변성(Immutable): 이미지가 한 번 생성되면 변경할 수 없음 필요한 파일만 포함하고 있어 용량이 작음 Docker Image 실습 docker pull [name:tag]: 도커 허브에서 이미지 내려받기 Private Registry 서버를 통해 이미지를 제공받거나 제공 가능 # docker [image] pull [options] nam.. 2024. 1. 11.