목표 : 깃허브 커밋을 하면 자동으로 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..
이전글 보고 오려면 클릭 Google Custom Search API 사용해보기 프로젝트에서 이미지 크롤링을 이용한 서비스를 제공할 예정이다. Jsoup을 이용해서 이미지 크롤링 기능을 구현해 놨다. 하지만 해당 방식은 Google 이미지 검색 결과 페이지에서 값을 가져오는 방 e-room.tistory.com 구글 Custom Search API를 비용 때문에 포기하고 좀 더 찾아보니, 네이버 검색 API가 있었다. 정말 반갑게도 해당 API는 하루에 25000회까지 무료인듯하다. 네이버 검색 API 사용방법 네이버도 사용방법이 아주아주 간단하다. 우선 아래의 링크로 접속한다. 애플리케이션 - NAVER Developers developers.naver.com 접속하면 아래와 같은 화면이 나오는데, 애..
프로젝트에서 이미지 크롤링을 이용한 서비스를 제공할 예정이다. Jsoup을 이용해서 이미지 크롤링 기능을 구현해 놨다. 하지만 해당 방식은 Google 이미지 검색 결과 페이지에서 값을 가져오는 방식이다. 구글은 기본적으로 20개씩 띄워주게 되는데, 다음 인덱스 이미지를 가져오는 방법이 필요해서 알아보다 보니, Jsoup에서는 안되고 Selenium과 같은 자동화 도구를 사용해야 한다고 한다. 그래서 Selenium을 알아보다보니, Google의 정책에 위반될 수 있고, IP차단 등의 문제가 발생할 수 있다고 한다. 아무튼 실제 서비스를 할 생각인데, 합법적인 방법이 아니면 찝찝하기 때문에 넘기기로 했다. Google Custom Search API 그래서 좀 더 알아보니, Custom Search AP..
mockMvc = MockMvcBuilders .webAppContextSetup(webApplicationContext) // .apply(SecurityMockMvcConfigurers.springSecurity()) .build(); 컨트롤러 계층 테스트를 진행하던 중 유저 인증이 없어야 되는 경우를 테스트를 하려고 하니 SpringSecurity와 OAuth2에 의해 막히는 상황이 왔다. 뭐 대충 이런 상황인데.. @WebMvcTest(CommentController.class) @MockBean(JpaMetamodelMappingContext.class) class CommentControllerTest { @Autowired private MockMvc mockMvc; OAuth2 인증이 진행..