빌드 시점에 NEXT_PUBLIC_API_URL 설정

This commit is contained in:
dohyeons 2025-11-11 17:49:41 +09:00
parent c669374156
commit 1514af2383
3 changed files with 19 additions and 4 deletions

View File

@ -39,8 +39,10 @@ RUN npm ci && \
COPY frontend/ ./ COPY frontend/ ./
# Next.js 프로덕션 빌드 (린트 비활성화) # Next.js 프로덕션 빌드 (린트 비활성화)
# 빌드 시점에 환경변수 설정 (번들에 포함됨)
ENV NEXT_TELEMETRY_DISABLED=1 ENV NEXT_TELEMETRY_DISABLED=1
ENV NODE_ENV=production ENV NODE_ENV=production
ENV NEXT_PUBLIC_API_URL="https://logistream.kpslp.kr:8080/api"
RUN npm run build:no-lint RUN npm run build:no-lint
# ------------------------------ # ------------------------------

View File

@ -64,7 +64,10 @@ export const useLogin = () => {
// 로컬 스토리지에서 토큰 가져오기 // 로컬 스토리지에서 토큰 가져오기
const token = localStorage.getItem("authToken"); const token = localStorage.getItem("authToken");
const response = await fetch(`${API_BASE_URL}${endpoint}`, { // API URL 동적 계산 (매번 호출 시마다)
const apiBaseUrl = API_BASE_URL;
const response = await fetch(`${apiBaseUrl}${endpoint}`, {
credentials: "include", credentials: "include",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",

View File

@ -32,11 +32,21 @@ const getApiBaseUrl = (): string => {
} }
} }
// 3. 기본값 // 3. 기본값 (서버사이드 빌드 시)
return "http://localhost:8080/api"; return process.env.NEXT_PUBLIC_API_URL || "http://localhost:8080/api";
}; };
export const API_BASE_URL = getApiBaseUrl(); // 매번 호출 시 동적으로 계산 (getter 함수)
export const getAPIBaseURL = getApiBaseUrl;
// 하위 호환성을 위해 유지하되, 동적으로 계산되도록 수정
let _cachedApiBaseUrl: string | null = null;
export const API_BASE_URL = (() => {
if (_cachedApiBaseUrl === null || typeof window !== "undefined") {
_cachedApiBaseUrl = getApiBaseUrl();
}
return _cachedApiBaseUrl;
})();
// 이미지 URL을 완전한 URL로 변환하는 함수 // 이미지 URL을 완전한 URL로 변환하는 함수
export const getFullImageUrl = (imagePath: string): string => { export const getFullImageUrl = (imagePath: string): string => {