Files
2026-04-01 22:01:36 +02:00

93 lines
2.7 KiB
Batchfile

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "ROOT_DIR=%~dp0.."
set "IMAGE_OUT_DIR=%ROOT_DIR%\images"
set "ARCHIVE_FILE=%IMAGE_OUT_DIR%\webstore-production-images.tar"
set "API_IMAGE=webstore-api:prod"
set "DB_IMAGE=postgres:16-alpine"
echo [1/7] Checking Docker availability...
docker --version >nul 2>&1
if errorlevel 1 (
echo ERROR: Docker CLI is not available. Install Docker Desktop first.
exit /b 1
)
echo [2/7] Building production API image: %API_IMAGE%
pushd "%ROOT_DIR%" >nul
docker build -t "%API_IMAGE%" -f Dockerfile .
if errorlevel 1 (
popd >nul
echo ERROR: Failed to build API image.
exit /b 1
)
popd >nul
echo [3/7] Pulling database image: %DB_IMAGE%
docker pull "%DB_IMAGE%"
if errorlevel 1 (
echo ERROR: Failed to pull database image.
exit /b 1
)
echo [4/7] Preparing image output directory: %IMAGE_OUT_DIR%
if not exist "%IMAGE_OUT_DIR%" mkdir "%IMAGE_OUT_DIR%"
echo [5/7] Creating placeholder product images...
pushd "%ROOT_DIR%" >nul
REM Create uploads directory
if not exist "%IMAGE_OUT_DIR%\uploads" mkdir "%IMAGE_OUT_DIR%\uploads"
REM Use Node.js to generate placeholder images reliably
echo Generating placeholder images using Node.js...
node "%ROOT_DIR%\scripts\generate-placeholder-images.js"
if errorlevel 1 (
echo WARNING: Could not generate placeholder images automatically
echo Note: Images can be added manually to %IMAGE_OUT_DIR%
)
popd >nul
echo [6/7] Exporting images to archive...
if exist "%ARCHIVE_FILE%" del /f /q "%ARCHIVE_FILE%"
docker save -o "%ARCHIVE_FILE%" "%API_IMAGE%" "%DB_IMAGE%"
if errorlevel 1 (
echo ERROR: Failed to export Docker images.
exit /b 1
)
echo [7/7] Done.
echo.
echo ========================================
echo PRODUCTION BUILD COMPLETE
echo ========================================
echo.
echo Created archive: "%ARCHIVE_FILE%"
echo.
echo FILES TO DISTRIBUTE TO STUDENTS:
echo 1. "%ARCHIVE_FILE%"
echo 2. "%IMAGE_OUT_DIR%\production.compose.yml"
echo 3. "%IMAGE_OUT_DIR%\.production.env" (with proper configuration)
echo 4. "%IMAGE_OUT_DIR%\run-student-production.bat"
echo.
echo WHAT'S INCLUDED:
echo - Production API Docker image
echo - PostgreSQL database image
echo - Initial seeding script (creates 5 categories, 16 products, 3 test users)
echo - Placeholder product images (17 images)
echo - Upload directory for student-generated images
echo.
echo STUDENTS SHOULD:
echo 1. Extract webstore-production-images.tar
echo 2. Copy .production.env and configure database credentials
echo 3. Run run-student-production.bat
echo 4. Database will auto-seed with sample data
echo 5. Test users available:
echo - admin@test.com / admin123
echo - john@test.com / password123
echo - jane@test.com / password123
echo.
exit /b 0