From 26ede5830c102d9e4d3b39cb29fa8df443f1927f Mon Sep 17 00:00:00 2001 From: chpark Date: Mon, 22 Sep 2025 17:46:23 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9C=88=EB=8F=84=EC=9A=B0=EC=9A=A9=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=ED=8C=8C=EC=9D=BC=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend-node/Dockerfile.win | 28 ++++++ .../src/controllers/multilangController.ts | 2 +- docker-compose.backend.win.yml | 12 ++- docker-compose.frontend.win.yml | 9 +- docker-compose.win.yml | 3 +- run-windows.bat | 11 ++- start-all-separated.bat | 13 ++- start-windows-simple.bat | 97 +++++++++++++++++++ test-backend-build.bat | 47 +++++++++ 9 files changed, 208 insertions(+), 14 deletions(-) create mode 100644 backend-node/Dockerfile.win create mode 100644 start-windows-simple.bat create mode 100644 test-backend-build.bat diff --git a/backend-node/Dockerfile.win b/backend-node/Dockerfile.win new file mode 100644 index 00000000..c1ab5ec8 --- /dev/null +++ b/backend-node/Dockerfile.win @@ -0,0 +1,28 @@ +# Windows 개발 환경 전용 Dockerfile (단순 개발 모드) +FROM node:20-bookworm-slim + +WORKDIR /app + +# 필요한 패키지 설치 (wget 포함) +RUN apt-get update \ + && apt-get install -y --no-install-recommends openssl ca-certificates wget \ + && rm -rf /var/lib/apt/lists/* + +# package.json 복사 및 의존성 설치 +COPY package*.json ./ +RUN npm ci + +# 소스 코드 복사 +COPY . . + +# Prisma 클라이언트 생성 +RUN npx prisma generate + +# 개발 환경 설정 +ENV NODE_ENV=development + +# 포트 노출 +EXPOSE 8080 + +# 개발 서버 시작 (nodemon 사용) +CMD ["npm", "run", "dev"] diff --git a/backend-node/src/controllers/multilangController.ts b/backend-node/src/controllers/multilangController.ts index 65600672..25cfb1b3 100644 --- a/backend-node/src/controllers/multilangController.ts +++ b/backend-node/src/controllers/multilangController.ts @@ -103,7 +103,7 @@ export const getBatchTranslations = async ( } // 2. 모든 key_id를 추출 - const keyIds = langKeyMasters.map((master) => master.key_id); + const keyIds = langKeyMasters.map((master: any) => master.key_id); // 3. 요청된 언어와 한국어 번역을 한번에 조회 const translations = await prisma.$queryRaw` diff --git a/docker-compose.backend.win.yml b/docker-compose.backend.win.yml index 67557614..bef844dc 100644 --- a/docker-compose.backend.win.yml +++ b/docker-compose.backend.win.yml @@ -5,7 +5,7 @@ services: backend: build: context: ./backend-node - dockerfile: Dockerfile + dockerfile: Dockerfile.win container_name: pms-backend-win ports: - "8080:8080" @@ -21,16 +21,18 @@ services: volumes: - ./backend-node:/app - /app/node_modules + - /app/dist networks: - pms-network restart: unless-stopped healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/health", "||", "exit", "1"] interval: 30s - timeout: 10s - retries: 3 - start_period: 60s + timeout: 15s + retries: 5 + start_period: 90s networks: pms-network: driver: bridge + external: false diff --git a/docker-compose.frontend.win.yml b/docker-compose.frontend.win.yml index d8865567..db9722d8 100644 --- a/docker-compose.frontend.win.yml +++ b/docker-compose.frontend.win.yml @@ -11,6 +11,7 @@ services: - "9771:3000" environment: - NEXT_PUBLIC_API_URL=http://localhost:8080/api + - WATCHPACK_POLLING=true volumes: - ./frontend:/app - /app/node_modules @@ -18,8 +19,14 @@ services: networks: - pms-network restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000", "||", "exit", "1"] + interval: 30s + timeout: 15s + retries: 3 + start_period: 60s networks: pms-network: driver: bridge - external: true + external: false diff --git a/docker-compose.win.yml b/docker-compose.win.yml index 67d83bc6..844266ea 100644 --- a/docker-compose.win.yml +++ b/docker-compose.win.yml @@ -59,4 +59,5 @@ volumes: networks: plm-network: - driver: bridge \ No newline at end of file + driver: bridge + external: false \ No newline at end of file diff --git a/run-windows.bat b/run-windows.bat index 39c84ab3..b5490e27 100644 --- a/run-windows.bat +++ b/run-windows.bat @@ -1,14 +1,19 @@ @echo off +REM 스크립트가 있는 디렉토리로 이동 +cd /d "%~dp0" + echo ===================================== echo PLM 솔루션 - Windows 시작 echo ===================================== -echo 기존 컨테이너 정리 중... -docker-compose -f docker-compose.win.yml down 2>nul +echo 기존 컨테이너 및 네트워크 정리 중... +docker-compose -f docker-compose.win.yml down -v 2>nul +docker network rm plm-network 2>nul echo PLM 서비스 시작 중... -docker-compose -f docker-compose.win.yml up --build --force-recreate -d +docker-compose -f docker-compose.win.yml build --no-cache +docker-compose -f docker-compose.win.yml up -d if %errorlevel% equ 0 ( echo. diff --git a/start-all-separated.bat b/start-all-separated.bat index b7bb3725..7c580aca 100644 --- a/start-all-separated.bat +++ b/start-all-separated.bat @@ -1,6 +1,9 @@ @echo off chcp 65001 >nul +REM 스크립트가 있는 디렉토리로 이동 +cd /d "%~dp0" + echo ============================================ echo PLM 솔루션 - 전체 서비스 시작 (분리형) echo ============================================ @@ -14,9 +17,13 @@ echo ============================================ echo 1. 백엔드 서비스 시작 중... echo ============================================ +REM 기존 컨테이너 및 네트워크 정리 +docker-compose -f docker-compose.backend.win.yml down -v 2>nul +docker-compose -f docker-compose.frontend.win.yml down -v 2>nul +docker network rm pms-network 2>nul + +REM 백엔드 빌드 및 시작 docker-compose -f docker-compose.backend.win.yml build --no-cache -docker-compose -f docker-compose.backend.win.yml down -v -docker network create pms-network 2>nul || echo 네트워크가 이미 존재합니다. docker-compose -f docker-compose.backend.win.yml up -d echo. @@ -29,8 +36,8 @@ echo ============================================ echo 2. 프론트엔드 서비스 시작 중... echo ============================================ +REM 프론트엔드 빌드 및 시작 docker-compose -f docker-compose.frontend.win.yml build --no-cache -docker-compose -f docker-compose.frontend.win.yml down -v docker-compose -f docker-compose.frontend.win.yml up -d echo. diff --git a/start-windows-simple.bat b/start-windows-simple.bat new file mode 100644 index 00000000..a5c96fa7 --- /dev/null +++ b/start-windows-simple.bat @@ -0,0 +1,97 @@ +@echo off +chcp 65001 >nul + +REM 스크립트가 있는 디렉토리로 이동 +cd /d "%~dp0" + +echo ============================================ +echo PLM 솔루션 - 윈도우 간편 시작 +echo ============================================ +echo. + +REM Docker Desktop 실행 확인 +echo 🔍 Docker Desktop 상태 확인 중... +docker --version >nul 2>&1 +if %errorlevel% neq 0 ( + echo ❌ Docker Desktop이 실행되지 않았습니다! + echo Docker Desktop을 먼저 실행해주세요. + echo. + pause + exit /b 1 +) + +echo ✅ Docker Desktop이 실행 중입니다. +echo. + +REM 기존 컨테이너 정리 +echo 🧹 기존 컨테이너 정리 중... +docker-compose -f docker-compose.backend.win.yml down -v 2>nul +docker-compose -f docker-compose.frontend.win.yml down -v 2>nul +docker network rm pms-network 2>nul +echo. + +REM 백엔드 시작 +echo ============================================ +echo 🚀 1단계: 백엔드 서비스 시작 중... +echo ============================================ +docker-compose -f docker-compose.backend.win.yml up -d --build + +if %errorlevel% neq 0 ( + echo ❌ 백엔드 시작 실패! + echo 로그를 확인하세요: docker-compose -f docker-compose.backend.win.yml logs + pause + exit /b 1 +) + +echo ✅ 백엔드 서비스 시작 완료 +echo ⏳ 백엔드 안정화 대기 중... (30초) +timeout /t 30 /nobreak >nul + +REM 프론트엔드 시작 +echo. +echo ============================================ +echo 🎨 2단계: 프론트엔드 서비스 시작 중... +echo ============================================ +docker-compose -f docker-compose.frontend.win.yml up -d --build + +if %errorlevel% neq 0 ( + echo ❌ 프론트엔드 시작 실패! + echo 로그를 확인하세요: docker-compose -f docker-compose.frontend.win.yml logs + pause + exit /b 1 +) + +echo ✅ 프론트엔드 서비스 시작 완료 +echo ⏳ 프론트엔드 안정화 대기 중... (15초) +timeout /t 15 /nobreak >nul + +echo. +echo ============================================ +echo 🎉 PLM 솔루션이 성공적으로 시작되었습니다! +echo ============================================ +echo. +echo 📱 접속 정보: +echo • 프론트엔드: http://localhost:9771 +echo • 백엔드 API: http://localhost:8080/api +echo • 데이터베이스: 39.117.244.52:11132 +echo. +echo 📊 서비스 상태 확인: +echo docker-compose -f docker-compose.backend.win.yml ps +echo docker-compose -f docker-compose.frontend.win.yml ps +echo. +echo 📋 로그 확인: +echo 백엔드: docker-compose -f docker-compose.backend.win.yml logs -f +echo 프론트엔드: docker-compose -f docker-compose.frontend.win.yml logs -f +echo. +echo 🛑 서비스 중지: +echo stop-all-separated.bat 실행 +echo. + +REM 브라우저 자동 열기 +echo 5초 후 브라우저에서 애플리케이션을 엽니다... +timeout /t 5 /nobreak >nul +start http://localhost:9771 + +echo. +echo 애플리케이션이 준비되었습니다! +pause diff --git a/test-backend-build.bat b/test-backend-build.bat new file mode 100644 index 00000000..dad4aaee --- /dev/null +++ b/test-backend-build.bat @@ -0,0 +1,47 @@ +@echo off +chcp 65001 >nul + +REM 스크립트가 있는 디렉토리로 이동 +cd /d "%~dp0" + +echo ============================================ +echo 백엔드 빌드 테스트 (Windows 전용) +echo ============================================ +echo. + +echo 🔍 기존 컨테이너 정리 중... +docker-compose -f docker-compose.backend.win.yml down -v 2>nul + +echo. +echo 🚀 백엔드 빌드 시작... +docker-compose -f docker-compose.backend.win.yml build --no-cache + +if %errorlevel% equ 0 ( + echo. + echo ✅ 백엔드 빌드 성공! + echo. + echo 🚀 백엔드 시작 중... + docker-compose -f docker-compose.backend.win.yml up -d + + if %errorlevel% equ 0 ( + echo ✅ 백엔드 시작 완료! + echo. + echo 📊 컨테이너 상태: + docker-compose -f docker-compose.backend.win.yml ps + echo. + echo 📋 로그 확인: + echo docker-compose -f docker-compose.backend.win.yml logs -f + echo. + echo 🌐 헬스체크: + echo http://localhost:8080/health + ) else ( + echo ❌ 백엔드 시작 실패! + echo 로그를 확인하세요: docker-compose -f docker-compose.backend.win.yml logs + ) +) else ( + echo ❌ 백엔드 빌드 실패! + echo 위의 오류 메시지를 확인하세요. +) + +echo. +pause