목표 : 깃허브 커밋을 하면 자동으로 EC2에 반영되도록 하는 CD/CD를 구축한다. 지난번에는 Docker를 이용하여 Spring boot 애플리케이션을 EC2에 배포를 했습니다. 이번에는 해당 과정을 로컬환경에서 깃허브 커밋&푸시가 이루어지면 Github Actions가 대신해 주도록 하여, CI/CD를 구축해 봅시다. (자신이 Spring Boot 애플리케이션을 빌드하고 도커허브에 푸시하고 EC2에서 풀 받아서 실행시키도록 했던 과정을 Github Actions에게 모두 시킨다고 생각하시면 됩니다.) 깃허브 참조 GitHub - Ksiyeong/GithubAction-Docker-EC2 Contribute to Ksiyeong/GithubAction-Docker-EC2 development by c..
목표 : Docker를 사용해서 Spring-boot 애플리케이션을 EC2에 배포 사전 작업 Spring-boot 프로젝트 Docker Hub 회원가입 로컬 PC 및 EC2에 Docker 설치(ubuntu 설치는 아래 공식문서 참조) Install Docker Engine on Ubuntu docs.docker.com 환경 Java 17 Spring Boot 3.1.0 gradle 로컬 PC : M2 Mac os EC2 : Ubuntu 22.04 프리티어 1. 로컬 PC에서 Docker 설정하기 1-1. Spring Boot - Dockerfile 생성 및 설정 Dockerfile 작성 전 알아두면 좋을 지시어 지시어 설명 FROM 베이스 이미지 지정 RUN 이미지를 지정하면서 실행할 명령 지정 ENTR..
시행착오 과정이 궁금하지 않은 분들은 아래로 이동하세요 현재 검색 관련 쿼리파라미터를 다음과 같이 받고 있다. @GetMapping("/worldcups") public ResponseEntity getWorldCups(@RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "5") int size, @RequestParam(required = false, defaultValue = "playCount") String sort, @RequestParam(required = false, defaultValue = "DESC") Sort.Direction directio..
얼마 전에 프론트엔드 개발자분이 서버에서 받은 데이터가 브라우저에 캐싱이 안된다고 했다. 서버 측에서 캐싱을 할 수 없도록 설정해놨다고 한다. 나는 처음에는 서버자체에서 캐싱을 이야기하는 줄 알았다.(ex: @Cacheable) 아직 캐싱관련 설정을 하지 않았기 때문에 아직 별도의 설정을 하지 않았기 때문에 해놓겠다고 했다. 우선 메인페이지를 구성하는 월드컵 검색 api에만 설정을 해놓고 되는지 확인해 보라고 했다. 그랬더니 똑같이 안된다고 한다. 서버로그를 확인해보니 정상적으로 캐싱이 되어 데이터베이스로 쿼리문이 날아가지 않는다. 응...???? 뭔가 이상함을 느꼈고, 다시 검색을 해보니 브라우저에서 캐싱을 하는 것과 서버에서 캐싱을 하는 것은 전혀 다른 것이었다. 프론트엔드개발자분이 요청한 것은 브라..
ImgBB API를 이용하여 이미지 업로드 기능을 만들어 보았다. 굳이 ImgBB를 선택한 이유는 무료라는 점과 간단하다는 점. 물론 추가적인 용량이나 다른 기능이 필요하다면 결제를 해야 하지만, 결제를 해도 저렴하다. 3년 이용 시 한 달에 3.99달러이며, 3년이면 143.64달러이다. 그래서 해당 서비스를 이용하기로 했다. 무료 이미지 호스팅 / 이미지 업로드 이미지를 업로드 하고공유해보세요. 원하는 곳 어디든 끌어놓기로 이미지를 바로 업로드해보세요.(이미지당 32 MB 가능) 다이렉트 링크, BBCode 및 HTML 미리보기등을 제공해드립니다. ko.imgbb.com 작동방식 확인 우선 API를 이용해 보자. Upload Image — Free Image Hosting Free image host..
프로젝트를 진행하는데, 이미지 저장을 해야 해서 찾아보았다. 스프링 공식 가이드 Getting Started | Uploading Files To start a Spring Boot MVC application, you first need a starter. In this sample, spring-boot-starter-thymeleaf and spring-boot-starter-web are already added as dependencies. To upload files with Servlet containers, you need to register a MultipartConfigEl spring.io 스프링 공식 가이드 깃허브 소스코드 GitHub - spring-guides/gs-upload..
Querydsl의. orderBy() 메서드를 살펴보면 OrderSpecifier 매개변수로 받는다. 아주 간편하게 정렬을 하는 방법을 기록해 본다. private OrderSpecifier pageableToOrderSpecifier(Pageable pageable) { Sort.Order sortOrder = pageable.getSort().get().collect(Collectors.toList()).get(0); Order order = sortOrder.getDirection().isAscending() ? Order.ASC : Order.DESC; PathBuilder sort = new PathBuilder(WorldCup.class, "worldCup").get(sortOrder.getP..
이상형월드컵 게임을 위해 랜덤 정렬이 필요했다. 그래서 querydsl에서 사용해 보려고 관련 자료들을 찾아보았다. .orderBy(NumberExpression.random().asc()) 해당 방법을 사용하면 SQLSyntaxErrorException이 발생하며, MySql 버전이 맞지 않는다고 한다. 그래서 우선은 @Query 어노테이션을 이용해서 직접 작성해 주었다. @Query("SELECT c FROM Candidate c WHERE c.worldCup.id = :worldCupId ORDER BY RAND() LIMIT :teamCount") 해당 방법으로 해서 개발을 진행하다 문득 querydsl에도 방법이 있지 않을까 싶어 좀 더 찾아보니 방법이 있었다. .orderBy(Expressio..
시작하게 된 계기 이전에 진행했었던 프로젝트에서 다양한 부분에서 부족함을 많이 느꼈고, 백엔드의 모든 부분에 대해 직접 개발해보고자 하는 욕심도 있었다. 무엇보다 나만의 서비스를 운영해보고 싶다는 생각도 있었다. 그래서 백엔드 1인, 프런트엔드 1인으로 진행을 해보고자 한다. 이상형월드컵 선택 이유 ? 예전에 여자친구와 여러 가지 선택지 중에서 하나를 고르려다 어떤 걸 고를지 몰라 한참 고민했던 적이 있다. 그때 이상형월드컵 서비스에 접속해서 나만의 월드컵 만들기를 이용한 적이 있다. 그런데 그때 월드컵을 만들려면 각종 사진들을 미리 다운로드해서 준비해왔어야 했고, 이를 보자마자 귀찮아서 창을 닫았던 기억이 있다. 그래서 오로지 편리함에 초점을 맞추어 제작해 보고자 한다. 간략한 설계 현재 검색창에 이상..