목적
: SpringBoot 프로젝트 안에서 MySQL 외에도 NoSQL을 이용한 토큰 관리로 로그아웃을 구현하기 위함
: Windows 환경에서 Docker desktop과 우분투 사용
참고 시리즈
2. Redis를 이용한 로그인 관리 - https://radpro.tistory.com/543
3. Redis를 이용한 로그아웃 관리 - https://radpro.tistory.com/544
4. Redis - Ubuntu로 연결 (도커없이) - https://radpro.tistory.com/546
사전준비
1. Docker Desktop 설치 : 링크를 통해 다운받으셈
2. UBuntu 설치 : 윈도우 키를 누르고 Microsoft Store에 드가서 깔으셈
도커(Docker) - 우분투 (Ubuntu) 연결
1. Docker Desktop을 열고 -> 사이드바의 Containers를 누르고 -> 아래 Redis의 Run을 누르셈
: 당신은 이미 레디스를 가진것임. 참 좋은 세상임. 하지만 쓸수 없으므로 무쓸모지 후후후
2. 위에서 옆에보면 Do more -> Interact with Redis from your terminal을 열어보셈
-> Run redis-cli using this command의 명령어 복사 -> 우분투를 열어 입력
: 놀랍게도 레디스 CLI를 이미 들어와 있는 것임 (로컬호스트:6379 라는 디폴트 IP:포트상태로 실행된 것임)
: 이제 명령어 넣고 쓰심 됩니다.
도커(Docker) - Spring 프로젝트 연결
: 위에서 연장선으로 아래 순서대로 하면 된다. 아래 [이미지 설명]과 [코드 설명] 中 본인이 편한 한가지 방식만 하면 된다.
* 도커의 Redis Image ID는 다음 경로에서 확인이 가능하다.
[ 이미지 설명 ]
1. 도커 데스크탑에서 Create a Compose file for your application을 연다
2. docker-compose.yml을 복사해서 프로젝트 내 resources에 만들어준다
3. YOUR-APP-IMAGE에 본인이 레디스를 만든 Image ID를 넣어준다
4. 프로젝트 터미널에서 resources로 들어가서 ④번의 명령어를 실행한다 (이게 key point다)

[ 코드 설명 ]
1. Spring 프로젝트에서 resources 경로에 docker-compose.yml 파일을 만든다.
2. 아래 코드를 입력한다.
volumes:
data:
services:
redis:
image: redis:latest
volumes:
- data:/data
hostname: localhost
ports:
- 6379:6379
myapp:
image: 본인의_REDIS_이미지ID
3. 터미널에서 아래 명령어로 resources 경로로 들어가 명령어를 실행한다. (이게 KeyPoint다)
/* 경로로 이동 */
$ cd src/main/resources
/* 연결 실행 코드 */
$ docker-compose up -d
4. 성공시 다음과 같이 코드가 실행된다.

* 위에서 강조한 마지막 코드를 입력 안하면 다음의 에러랑 만나볼 수 있다.
/* compose.yml 활성화 호출을 이상한 경로에서 하면 발생 */
no configuration file provided: not found
/* 레디스 연결 안해놓고 호출하면 500에러와 함께 발생 */
redis <unresolved>:6379
[ 해결방법 ]
/* 경로로 이동 */
$ cd src/main/resources
/* 연결 실행 코드 */
$ docker-compose up -d
터미널에서 CLI로 사용하는 명령어 (=우분투에서 CLI로 쓰는 방법)
1. Redis 명령어 (참고링크 : https://msyu1207.tistory.com/entry/Redis-PubSub)
2. Docker 명령어 (참고링크 : https://itchipmunk.tistory.com/455)
/* 도커에서 redis 설치 (이미 설치했으니까 지금은 필요 음슴) */
docker pull redis
/* 도커에 있는 images 확인 (그냥 Docker desktop 사이드바의 images에서 보셈) */
docker images
/* 도커에 있는 image로 컨테이너 생성 및 실행 */
docker run --name 컨테이너_이름 -d redis
/* 도커에 있는 image로 컨테이너 생성 및 실행 + 60초마다 1개의 스냅샷 찍게하는 설정 추가 */
/* --loglevel waring옵션은 많은 로그가 쌓이지 않게 하기 위함 */
/* 스토리지 저장이 활성화되면 VOLUME/data에 저장됨 */
docker run --name 컨테이너_이름 -d redis redis-server --save 60 1 --loglevel warning
/* 도커에 실행된 컨테이너 확인 (그냥 Docker desktop 사이드바의 container에서 보셈) */
docker ps -a
/* 도커에 실행된 컨테이너 시작, 정지, 재시작 (마찬가지로 decktop 앱에서 똑딱 하셈) */
docker start 컨테이너_이름
docker stop 컨테이너_이름
docker restart 컨테이너_이름
/* 도커에 Redis-cli으로 redis로 접속해달라는 명령어 (잘 안먹히니까 그냥 첨에 보여준 방법 사용) */
docker run -it --network -rm redis redis-cli -h redis-o4iN
'Java & Spring > Spring' 카테고리의 다른 글
[Redis] (3) Redis로 로그아웃 (Access 및 Refresh Token 관리) (0) | 2023.02.11 |
---|---|
[Redis] (2) Redis로 로그인 (Refresh Token 관리) (0) | 2023.02.11 |
[OAuth2.0] 카카오 로그아웃 (0) | 2023.02.09 |
[OAuth2.0] Google 로그인 (프론트엔드 브라우저 연동 버젼) (0) | 2023.02.06 |
[OAuth2.0] Google 로그인 (백엔드 테스트 버젼) (2) | 2023.02.06 |