분류 전체보기
-
[FastAPI, PostgreSQL] postgresql://와 postgresql+asyncpg:// 의 차이📚 개발백과 2024. 10. 18. 17:06
글을 작성하게 된 이유:FastAPI 에서 Session 생성을 하기 위해 postgresql url 을 주입하는 도중에 여러 프로젝트의 소스코드마다postgresql://로 시작하는 url도 있고 postgresql+asyncpg:// 로 시작하는 url도 있었는데 그 차이가 궁금했다.그리고 이것 때문에 프로젝트 실행하는 과정에서 삽질을 하기도 했다. 두 URL은 주로 동기 방식과 비동기 방식의 데이터베이스 연결 및 쿼리 실행 방식에 차이점이 있다. postgresql://이 url은 psycopg2와 같은 동기식 드라이버를 사용해 PostgreSQL 에 연결한다.이게 표준 연결 문자열이다. (당연해보이죠?) 이는 파이썬*의 일반적인 동기 실행 모델을 따르기 때문에, 데이터베이스 작업을 수행하는 동..
-
[Docker] 원격에서 다른 원격의 외부 엔드포인트 호출 안됨🩸 삽질의 추억/로컬에선 되는데 원격에서 안됨; 2024. 10. 2. 17:57
상황:원격 VM A, B 가 있다.A에 도커로 띄운 Spring Boot a1 이 B 서버의 엔드포인트로 API를 호출해야 함. Docker 컨테이너로 실행시킨 스프링 부트는 잘 돌아가나 A ->B 호출만 안되는 상황 스프링 컨테이너를 실행한 명령어docker run -d \ --name my-backend \ -p 8080:8080 \ my-backend 해결 방법: 다음과 같이 `--network host` 옵션을 추가한다.docker run -d \ --name my-backend \ -p 8080:8080 \ --network host \ my-backend 혹은 방화벽이나 보안 그룹 설정의 문제일 수도 있다.만약 호스트의 방화벽 설정이 docker0 인터페이스를 통한 통신을 제한하..
-
오프라인 상태에서 cURL 사용하기📚 개발백과 2024. 10. 1. 14:13
오프라인 상태에서 cURL을 사용할 수 있을까? 1. 요청 대상이 동일 네트워크/서버 요청할 대상이 동일 네트워크나 서버에 있으면 인터넷 연결 여부와 상관없이 cURL 테스트가 가능하다. > 왜?서버나 다른 대상이 같은 로컬 네트워크 내에 있으면 데이터는 같은 네트워크를 통해 직접 전송된다.이 경우, 내부 네트워크의 라우팅 기능이 데이터를 대상 서버로 직접 전달하기 때문에 외부 인터넷 연결이 필요하지 않다.> 예를 들면?같은 로컬 네트워크 내의 서버에 접근할 때, 요청은 인터넷을 통해 외부로 나갔다가 다시 들어오는 대신에 내부적으로만 라우팅되어 처리된다. 2. 요청 대상이 외부 서버 오프라인 상태에서 외부 서버로 요청을 보내는 것은 불가능하다. 외부 서버는 인터넷을 통해 접근할 수 있기 때문에서버가 인..
-
[Vite, Docker] 로컬에선 되는데 원격에서는 ERR_CONNECTION_REFUSED🩸 삽질의 추억/로컬에선 되는데 원격에서 안됨; 2024. 9. 30. 15:41
문제:로컬인 localhost:5173 에서는 페이지가 열리는데Docker 컨테이너를 실행했을 때는 :5173 접속 시 ERR_CONNECTION_REFUSED 에러가 발생한다.*Dockerfile, docker build 과정, 방화벽, VM 보안그룹에는 이상 없음 왜 로컬에선 되는데 원격에선 안되냐고!!!!!!!!!!!!!!!!! 해결방법: 기존 package.json 을 "scripts": { "dev": "vite", ... }, 다음과 같이 수정한다. "scripts": { "dev": "vite --host 0.0.0.0 --port 5173", ... }, 🤔 --port 도 지정해야하나요?> 사실 이 경우에는 --host 옵션만 주면 됨. --port는 포트번호도 지정..
-
[Java, Docker] gradlew ... did not complete successfully🩸 삽질의 추억 2024. 9. 29. 17:04
문제:docker build를 실행했는데 다음과 같은 에러가 발생하며 빌드가 되지 않았다.// 에러 메시지ERROR: failed to solve: process "/bin/sh -c ./gradlew clean bootJar" \did not complete successfully: exit code: 127// DockerfileFROM bellsoft/liberica-openjdk-alpine:17WORKDIR /appCOPY . .RUN ./gradlew clean bootJarEXPOSE 8080ENTRYPOINT ["java","-jar","/app/build/libs/myapp-0.0.1-SNAPSHOT.jar"] 원인 및 해결방법:라인 엔딩 문제이다.윈도우 -> CRLF (Carriage..
-
[Docker] 컨테이너 실행 시 외부에서 .yml 주입하기📚 개발백과 2024. 9. 26. 15:52
원하는 바:도커 이미지를 docker run으로 실행할 때 application.yml을 주입하고 싶음. > 이유: 업데이트된 yml을 주입하고 싶기 때문.yml 설정이 바뀔때마다 이미지를 새로 생성해서 가져가는일이 번거롭다; 방법: 기존) 컨테이너를 실행하는 명령어 참고로 `--network host`는 개인적으로 한 설정이다.기존과 수정 명령어간 차이만 봐주시면 된다.docker run -d \--name my-backend \-p 7778:7778 \--network host \ (개인 설정이므로 무시해도됨.)my-backend .. 에서 두 가지 옵션을 추가해준다.-v 와 -edocker run -d \--name my-backend \-p 7778:7778 \--network host \ (..
-
[Spring] 유효성 검사에서 @Valid 와 setField 중 무엇이 먼저 실행될까📚 개발백과 2024. 8. 8. 14:41
public class RequestDto { @Getter public static class BaseInfo { @Schema(description = "유저의 계좌 id", example = "123456789012") @NotNull(message = "계좌번호 입력은 필수입니다.") @TrimmedSize(value = 12, message = "계좌번호는 12자리이어야 합니다.") private String accountId; private void setAccountId(String accountId){ this.accountId = (accountId != null) ? accountId.trim..
-
클라우드 요금 낮추기 대작전 (물리적ver.)🗣️ IT사담 2024. 8. 7. 11:28
현재 VPC 가격만 미친 784,000원인 전체 서버를 사용하고 있다. 가장 큰 이유는1) 운영서버2) 개발서버3) DB서버를 각각 분리했는데, 각 서버별 요금이 누적되다보니 이런게 아닐까 싶다. 서버비는 외부로부터 지원을 받아서 별 걱정 없이 쓰긴 했었지만그래도 낭비하는 것 같아서 밑빠진 독이 어딘가 찾아나서기로 했다. 서버 종류는 다음과 같다.- DB섭- 개발섭- 운영섭-1- 운영섭-2- 운영섭-홈페이지 MSA라 서버가...; 서버 스펙을 변경하기 위해 가장 먼저 해야하는 일은안쓰는 프로그램이 돌아가는지 잡아내기 & 중지시키기메모리 사용량이 절대 이 정도로 나올 것 같지가 않은데.. 싶은 서버가 있었기 때문이다.(CPU나 Disk 는 매우 괜춘) 즉, 메모리 평균사용량을 다시 모니터링 하기 위함이다..