분류 전체보기

나는 docker compose 파일을 통해 ec2에서 Nginx, springboot, redis 총 3개의 컨테이너를 띄웠다. Redis는 로그인과 로그아웃 기능을 위해 필히 스프링부트와 연동이 되어야하는 상황이었다. 일단 docker ps 명령을 통해 Nginx, springboot, Redis 가 모두 돌아가는 것을 확인하였고, docker exec -it redis-cli 명령어를 통해 레디스에 접근하고 ping 명령어를 통해 제대로 작동하는지 여부또한 체크하였다. 근데!! 포스트맨을 통한 로그인 API를 테스트하려고 할 때마다 자꾸 레디스와 연결이 안되는 오류가 발생하였다. 구글링을 해보니 간단히 해결법을 찾았다. spring: data: redis: host: redis port: 6379 ..
나의 스프링부트 프로젝트를 도커 이미지로 만들었고 이 이미지를 도커 허브에 push하고 싶어서 아래 명령어를 실행했다. docker push fxteam:1.0 결과는? 왜이러니,,,,,? 찾아보니 크게 두가지 이유가 있다고 한다. 1. Docker Hub에 로그인 하지 않은 경우 난 로그인이 됐으니 이 문제는 아니다. 2. Docker Hub에 로그인 한 ID와 도커 이미지의 유저 ID가 다른 경우 이 문제였다. docker images 이미지 조회 명령어를 통해서 확인해보니 도커 이미지의 유저 ID가 로그인 한 ID와 달랐다. 이를 tag명령어를 이용하여 다시 만들어줄 수 있지만 나는 이미지를 다시 만들었다! docker hub에서 이미지가 push된걸 볼 수 있다.
docker와 친해지기 위해서 기존에 jar파일을 ec2에 올려놓고 사용하던 방식에서 docker를 이용하는 방식으로 변경하려고 한다. FROM openjdk:17 ARG JAR_FILE=build/libs/fxteam-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "app.jar"] Dockerfile은 위와 같이 구성하였고 이를 이미지로 빌드하기 위해 docker build --platform linux/amd64 -t fxteam:1.0 . 위와 같은 빌드 명령어를 실행하였다. --plateform linux/arm64 명령어는 현재 m1 mac을 사용중에 있는데 m1 mac에서 빌드하게 될 경우 자동으로 platfo..
ChatGPT API를 사용하려던 도중 @Qualifier를 사용하여 Bean 이름을 등록해 주었다. @Qualifier("openaiRestTemplate") private final RestTemplate restTemplate; Controller에서 사용하기 위해 이런식으로 사용하려고 했는데.... 엥 안되네? 찾아보니 @Qualifier는 @Autowired와 함께 사용해야 한다고 되어있어서 @Qualifier("openaiRestTemplate") @Autowired private RestTemplate restTemplate; 이런식으로 변경해주니 문제없이 돌아갔다! 다만, Field injection이 not recommend라니 Constructor Injection을 이용하는 방식으로는..
QueryDSL을 사용하던중 java: Attempt to recreate a file for type 이런 에러를 마주하게 되었다. 해결방법은 간단하다. 나의 경우에 Q클래스들이 generated 폴더에 생성되게 되는데 generate 폴더를 비워주고 재실행하면 에러가 발생하지 않는다!
이번 프로젝트를 진행하는데 있어서 금속 특징을 넣으려고 Postman을 통해서 전송하니 정해진 길이에서 초과된 길이의 텍스트가 입력되었다는 오류를 리턴받게 되었다. Mysql과 JPA를 사용중이었고 어떻게 해결했는지 알아보자! public class FirstMetal extends BaseEntity { ... private String metalCharacteristic; ... } 기존에는 이런식으로 되어있어서 자동으로 VARHCAR(255)로 설정되었다. 하지만 내가 넣으려는 텍스트의 길이는 255를 거뜬히 넘게되었고 어떻게 해결해야 할지 구글링을 하다가 알게된 방법을 공유하겠다. public class FirstMetal extends BaseEntity { ... @Column(columnDe..
Springboot 3.x 버전에서는 뭔가 많이 바꼈다. 이번 프로젝트를 진행해보며 CORS 문제를 해결을 어떻게 했는지 써보겠다! 프론트에서 우회하는 방식도 있지만 스프링부트에서 해결하는 방식으로 진행했다. 일단 나는 Spring Security를 사용중에 있으므로 Security를 사용했을때를 기준으로 설명하겠다. public class SecurityConfig { ... CorsConfigurationSource corsConfigurationSource() { return request -> { CorsConfiguration config = new CorsConfiguration(); config.setAllowedHeaders(Collections.singletonList("*")); con..
· IT 공부
HTTP (Hyper Text Transfer Protocol)은 웹에서 데이터를 주고 받기 위한 프로토콜이다. 즉, 클라이언트와 서버간의 통신을 해주는 프로토콜인 것이다. 이러한 HTTP의 특성을 알아보자. 무상태 (Stateless) HTTP는 무상태 프로토콜이다. 각각의 요청은 모두 독립적이며 이전 요청이나 응답과 무관하게 처리된다. 이는 서버가 클라이언트의 상태를 유지하지 않는다는 것이다. 이는 서버 확장성을 높이는 특성이 되기도 하다. 상태를 저장하지 않는 특성은 HTTP를 가벼운 프로토콜로 만들어 주었지만 사용자로 하여금 불편한 경험을 제공할 수 있다. 이러한 특성 때문에 쿠키와 세션이 나오게 되었다. 쿠키와 세션은 사용자의 상태 정보를 유지해서 HTTP로 통신하더라도 서비스에서 사용자의 상태..
· IT 공부
이번 글에서는 회원가입, 로그인, 로그아웃, 아이디 찾기, 비밀번호 찾기의 큰 그림을 그려볼 것이다. 특히 로그인과 로그아웃은 토큰 방식으로 설명할 것이다. 회원가입 간단하게 아이디, 비밀번호, 이메일 정도만 입력하는 것으로 하겠다. 2번 과정 이후 사용자의 민감한 정보는 서버에서 DB에 저장할 때 암호화는 필수적이다. 로그인 AccessToken은 비교적 RefreshToken보다 짧은 유효시간을 가지게 된다. 로그인 이후 모든 API 요청마다 AccessToken을 함께 서버로 전달하여 인가 과정을 거치게 된다. RefreshToken은 AccessToken이 만료되었을 때 재발급을 위해 존재한다. 필자와 같은 경우엔 주로 Redis라는 인메모리 데이터베이스를 이용하여 RefreshToken을 보관한..
· IT 공부
HTTPS , SSL/TLS HTTPS는 HTTP에 Secure를 붙인 단어이다. 위 사진에서 볼 수 있듯 HTTP는 보안 측면에서 매우 안좋다. 이유는 "보안이 적용되지 않은 데이터를 전송한다"이다. 요즘 인터넷에서 HTTPS는 선택이 아닌 필수이며 HTTPS는 대게 암호화를 위해 SSL/TLS 인증서를 사용한다. SSL 과 TLS SSL과 TLS 모두 네트워크를 통해 작동하는 서버, 시스템 및 응용 프로그램 간에 "인증 및 데이터 암호화"를 제공하는 암호화 전용 프로토콜이다. SSL은 TLS 이전의 프로토콜로 2015년에 SSL 3.0은 중단되고 TLS가 사용되고 있다. SSL 프로토콜이 남긴 레거시로 현재도 많은 분야에서 TLS와 SSL을 같은 표현으로 사용하기도 한다. 공개키 암호화 (비대칭 암호..
Choony
'분류 전체보기' 카테고리의 글 목록 (4 Page)