오늘의 기록
![[Spring] Swagger 3.0 적용](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1L7gh%2FbtrHqnUbIQZ%2FBLPwV31gKJekIiJ2kynsuK%2Fimg.png)
[Spring] Swagger 3.0 적용
Swagger는 REST API의 문서화, 테스트를 용이하게 해주는 프레임워크이다. 나같은 경우는 백엔드 개발을 하면서 API들을 직접 문서화시켜서 다른 개발자들과 공유하곤 했는데, Swagger를 사용하면 개발과 동시에 자동으로 문서화를 시켜주기 때문에 요즘 유용하게 사용하고 있는 도구이다. 특히, Spring에서는 애노테이션을 통해 더 편리하게 Swagger를 사용할 수 있는데, 지금부터 해당 방법을 소개한다. 라이브러리 추가 먼저 Swagger 사용을 위해 구현체인 springfox 라이브러리를 추가한다. dependencies { ... implementation 'io.springfox:springfox-boot-starter:3.0.0' } SwaggerConfig Swagger를 위한 설정 ..
![[Spring] Spring Security + JWT 토큰을 통한 로그인](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjaz44%2FbtrHpn1w3iq%2F1axELvordLWoGrfDLEK1E1%2Fimg.png)
[Spring] Spring Security + JWT 토큰을 통한 로그인
JWT JWT(Json Web Token)은 일반적으로 클라이언트와 서버 통신 시 권한 인가(Authorization)을 위해 사용하는 토큰이다. 현재 앱개발을 위해 REST API를 사용 중인데, 웹 상에서 Form을 통해 로그인하는 것이 아닌, API 접근을 위해 프론트엔드에게 인증 토큰을 발급하고 싶을 때, 적절한 인증 수단이라고 생각해서 이를 Spring Security와 함께 적용해보려 한다. Spring Security + JWT의 동작 과정을 살펴보자. 기본 동작 원리는 간단하다. 1. 클라이언트에서 ID/PW를 통해 로그인을 요청하면 2. 서버에서 DB에 해당 ID/PW를 가진 User가 있다면, Access Token과 Refresh Token을 발급해준다. 3. 클라이언트는 발급받은 A..
[Spring] Controller에서 pathvariable로 path(/aaa/bbb) 값 받는 법
API에서 Pathvariable은 자주 쓰인다. GET: /user/1 -> 여기서 '1'을 pathvariable로 가져올 수 있다. 하지만 만약, path 형태의 값을 pathvariable로 가져오고 싶다면? GET: /user/home/server/list -> 여기서 'home/server/list'를 pathvariable로 가져오고 싶지만, spring에서는 /user/home/server/list 라는 경로에 해당하는 컨트롤러를 찾을 뿐이다. 따라서, 다른 방식을 사용할 필요가 있다. @GetMapping("/user/**") public String getPath(HttpServletRequest request) { return request.getRequestURI().split(re..
![[Jira] Gitlab 서버 - Jira Cloud 연동](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLk5W4%2FbtrGaYnQE1d%2FN5N5wwfrA0kboYHcTAz1m0%2Fimg.png)
[Jira] Gitlab 서버 - Jira Cloud 연동
우선 Jira와 Gitlab을 어떻게 사용하느냐에 따라 연동하는 방식이 다르다. Jira Cloud, gitlab.com 처럼 인터넷에서 바로 사용하는 방식 자체 서버에 설치해서 사용하는 방식 여기서는 , Gitlab을 자체 서버에 설치하고, Jira는 클라우드(인터넷)를 사용하는 방식을 소개한다. 따라서 다음 두 연동에 대해 맞는 방식을 선택해야 한다. Gitlab -> Jira 연동: Jira가 클라우드(인터넷)이기 때문에, Gitlab 자체 설정으로 문제 없이 연동 가능하다. Jira -> Gitlab 연동: gitlab.com(인터넷)이라면 Jira 자체의 무료 앱으로 연동이 가능하지만, 현재 Gitlab이 자체 서버이기 때문에 DVCS 방식을 사용해야 한다. Jira DVCS connector ..
![[Docker] 도커 컨테이너에 깃랩(Gitlab) 설치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG5wi0%2FbtrGaXCui1Y%2FwWgPkAaySQyDZx5d18d0Ok%2Fimg.png)
[Docker] 도커 컨테이너에 깃랩(Gitlab) 설치
Gitlab 이미지 pull docker pull gitlab/gitlab-ce:latest+) 참고 깃랩 관련 이미지는 gitlab-ce, gitlab-ee가 있는데, ce는 community, ee는 enterprise 전용이라고 한다. 나중에 깃랩을 유료 티어(Tier)로 업그레이드하려고 할 때, gitlab-ee는 깃랩을 다시 설치할 필요가 없다. 여기서는 gitlab-ce를 사용했다. [관련자료] GitLab CE vs EE | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공 Gitlab 컨테이너 실행 docker run docker run --detach \ --hostname gitlab.example.com \ --publish 1980:80 --publish 1922:22 -..
[Docker] Dockerfile & build
Dockerfile & build 사용자 정의 도커 이미지를 만드는 방법은 대표적으로 docker commit이 있다. 그러나 docker commit은 직접 컨테이너 안에서 원하는 프로그램을 설치한 후에 해당 컨테이너 상태를 그대로 이미지 형태로 복사하는 것이다. 이러한 방법은 실수할 위험도 있고, 현재 컨테이너에 어떤 프로그램들이 설치 되어 있는지 일일이 확인하기 어렵다. 따라서 사용자 정의 이미지를 만드는 방식을 파일 형태로 명세하는 방법이 있는데, 바로 Dockerfile과 build를 사용한 방식이다. 아래 예시를 보자. ex) ubuntu 20.04에서 python을 설치해 서버까지 띄우는 작업을 하고싶다고 하자. 그리고 이를 이미지로 만들고 싶다. 먼저 docker commit을 통해 이미지..
[Docker] Docker compose
Docker compose 만약 wordpress_net 이라는 도커 네트워크를 만들고, 이 안에 mysql 컨테이너와 wordpress 컨테이너를 생성하고 싶다면 다음과 같이 명령어를 실행해야 한다. docker network create wordpress_net docker \ run \ --name "db" \ -v "$(pwd)/db_data:/var/lib/mysql" \ -e "MYSQL_ROOT_PASSWORD=123456" \ -e "MYSQL_DATABASE=wordpress" \ -e "MYSQL_USER=wordpress_user" \ -e "MYSQL_PASSWORD=123456" \ --network wordpress_net \ mysql:5.7 docker \ run \ --na..
![[Docker] Docker commit & push](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCxNXz%2FbtrFWzgNLTz%2Fd39qptllvyMnOuVc3dtgr1%2Fimg.png)
[Docker] Docker commit & push
Docker commit & push Docker commit을 통해 나만의 도커 이미지를 만들고 이를 docker hub에 push하는 방법을 알아보자. Docker commit 위 그림을 보면, docker hub에서 pull을 통해 image를 다운받고, run을 통해 컨테이너를 실행한다. 하나의 이미지로 여러 컨테이너를 만들 수 있고, 각각은 독립된 공간을 갖는다. 만약, ubuntu 이미지에서 run을 통해 생성된 컨테이너에서 git을 설치해서 작업하고 있을 때, ubuntu + git이 설치된 현재 컨테이너를 하나의 이미지로 만들고 싶다면 어떨까? 이 때 사용하는 기능이 바로 커밋이다. docker commit을 통해 내가 원하는 상태의 컨테이너를 하나의 이미지로 생성할 수 있다. 추가로, 생..