본문 바로가기

분류 전체보기115

Flask에서 Swagger사용 1. Swagger 란?* RESTful API를 설계, 빌드, 문서화 및 소비하는 데 도움이 되는 오픈 소스 도구 집합, 즉 API의 명세와 문서화를 위한 도구이다* API 문서화를 직접 문서에 적고 하는 것은 매우 귀찮고, API가 수정될때마다 문서를 같이 수정하는 것은 더욱 귀찮아서 이러한 불편함을 줄여주기 위해 사용하고, 프로젝트를 모르는 사람이 프로젝트 테스트 해볼시 이해하기 쉽게 해주는 용도다. 2. 설치하고 시작전 알아보기일단 swagger를 아예 처음 사용해보는거라 완벽한 답은 아직 잘 모르겠는데,ChatGpt도 그렇고 Gemini도 그렇고 구글 블로그들 봐도 대부분 테스트 코드가 아닌 실제 API로 테스트 해보는거로 나와있고 답변해서, Swagger로 실제 API 호출해서 테스트 해볼거다.. 2024. 12. 30.
10. 도커 컴포즈 -(3) 7. 컴포즈로 컨테이너를 동시에 2개 띄워보기이전에 컴포즈의 장점중 여러개의 컨테이너를 하나의 환경에서 실행하고 관리하니 편하고 좋기때문에 사용한다 해서 이번에 동시에 2개 띄워보기 (1) Redis 랑 Mysql 동시에 띄워보기이전과 같이 컨테이너 1개 띄웠을때랑 별 차이 없이 services 하위에 저렇게 따로따로 적고 실행시키면 끝이다. (2) Spring Boot 랑 Mysql 동시에 띄워보기일단 스프링 부트 프로젝트니 이전과 마찬가지로 도커 파일로 이렇게 하나 이번엔 jar 파일을 절대 경로로 적어본다 위에서 했던 redis,mysql 처럼 services 하위에 저렇게 각각 적는데 이번에 보면 mysql 코드쪽에 MYSQL_DATABASE는 컨테이너 생성할때 데이터베이스도 생성해주는 옵션이다... 2024. 11. 19.
[만료된 액세스 토큰 정보 가져오기]JWT expired at 2024-11-18T08:40:20Z. Current time: 2024-11-18T08:41:18Z, a difference of 58493 milliseconds. Allowed clock skew: 0 milliseconds. 에러 메세지io.jsonwebtoken.ExpiredJwtException: JWT expired at 2024-11-18T08:40:20Z. Current time: 2024-11-18T08:41:18Z, a difference of 58493 milliseconds. Allowed clock skew: 0 milliseconds. at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:427) ~[jjwt-impl-0.11.5.jar:0.11.5] at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:529) ~[jjwt-impl-0.11.5.jar:0.11.5].. 2024. 11. 18.
9. 도커 컴포즈 -(2) 4. 도커 컴포즈로 Redis 실행시키기$ docker run -d -p 6379:6379 residCompose.yml에 적은거 보면 이전 명령어CLI에 했던거랑 같은뜻$ docker compose up -d$ docker compose ps$ docker ps$ docker exec -it [컨테이너 ID 또는 컨테이너명] bash$ redis-cli127.0.0.1:6379> set 1 seok127.0.0.1:6379> get 1이렇게 컴포즈로 실행 시켜보고 레디스 접속후 데이터 넣고 확인해보니 정상 작동한다.  5. 도커 컴포즈로 MySQL 실행시키기$ docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /Users/jaeseong/Docume.. 2024. 11. 18.
8. 도커 컴포즈 -(1) 1. 도커 컴포즈를 사용하는 이유도커 컴포즈(Docker Copmose)란?여러 컨테이너를 하나의 묶음으로 관리할 수 있게 도와주는 툴이다 (1) 여러개의 컨테이너를 하나의 환경에서 실행하고 관리하니 편하고 좋기때문에 사용(2) 컨테이너를 복잡한 명령어로 실행시키던걸 간소화 시킬 수 있다. 이전에 Mysql  생성,실행,호스트-컨테이너 포트 연결,볼륨 연결할때 명령어보면 복잡한데 이거를docker compose up 명령어로 간단하게 해결 가능하다$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql .. 2024. 11. 18.
7. 도커파일 -(2) 4.  스프링 프로젝트를 도커로 실행도커파일에 이렇게 스냅샵 파일을 복사하는데 컨테이너의 최상위인 상대경로로 복사 하는거다.(컨테이너 어디에 복사하던 절대경로로 하던 맘대로)FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java","-jar","/app.jar"] 인텔리제이 GUI로 직접 빌드하거나 명령어로 빌드하고 빌드하고나면 build-libs에 스냅샵 자르 파일이 생성되는데이거로 이제 프로젝트를 실행 시키는거니 컨테이너에 이거를 복사해야한다.$ ./gradlew clean build 이후 해당 컨테이너 로그 찍어보고 직접 크롬에서 요청해보니 정상 작동한다$ docker build -t hello-server .$ docke.. 2024. 11. 15.
6. 도커 파일 -(1) 1.도커 파일이란?도커 이미지는 도커허브를 통해 다운 받는건데,이 이미지도 누군가 말들어서 도커 허브에 올려둔거다.그래서 도커파일을 이용해서 이미지를 만들 수 있다.이거를 사용하는 이유는 도커 허브에 있는 이미지를 말고 나만의 이미지를 만들고 싶을때 있다. 예를들어 도커파일로 스프링 부트 프로젝트 자체를 이미지로 만들고 이미지를 만들 수 있다. 2.FROM: 베이스 이미지 생성(1) 개념FROM은 베이스 이미지를 생성하는 역활을 하는데,도커 컨테이너에 특정 초기 이미지 셋팅 할 수 있는걸 말한다.쉽게 말하자면 컴퓨터 새로 사면 인터넷,그림판,메모장등 많이 깔려있는데 이거랑 같다. 즉 누구는 스프링 프로젝트때문에 JDK 깔려있는 셋팅 바랄수도 있고 누구는 노드프로젝트 때문에 Node가 깔려있는 셋팅 바랄수.. 2024. 11. 15.
5. 도커 볼륨 -(2) 4. 도커로 Mysql 실행시켜보기 - (2)(1) 볼륨(Volume)을 활용해 MySQL 컨테이너 띄우기 이제 볼륨을 사용할거니 호스트 컴퓨터에 볼륨 생성 원하는 위치 경로로 이동후 폴더 생성후 해당 폴더에 들어간다mkdir [폴더명] #현재 경로에서 해당폴더를 생성한다# docker run -e MYSQL_ROOT_PASSWORD={비밀번호} -p 3306:3306 -v {호스트의 절대경로}/{호스트에 생성할 폴더}:/var/lib/mysql -d mysql$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql .. 2024. 11. 14.
4. 도커 볼륨 -(1) 1. 컨테이너의 문제점컨테이너에 어떤 이미지가 있는데 그 이미지에 기능이 추가되면(업뎃) 새로운 이미지를 만들어서 컨테이너를 실행해야한다. 근데 지금까지는 기존 컨테이너 수정하지 않고 아예 새로운 컨테이너를 만들고 새로운 이미지 넣는 방식을 했다.하지만 생각해보면 Mysql의 경우 이렇게 하면 기존에 있던 데이터 다 날라가서 문제이니 이러한 문제를 볼륨으로 해결 2. 도커 볼륨(Docker Volume)이란?도커 볼륨이란? 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이고, 볼륨은 컨테이너 자체의 저장 공간을 사용하는게 아닌 호스트 컴퓨터 저장공간을 사용하는거다.만약 컨테이너가 볼륨에 A라는 디렉토리를 저장하려하는데 이미 볼륨에 A라는 디렉토리가 있다면 호스트에 있는A가 컨테이너에 덮어 씌우고,볼륨.. 2024. 11. 14.