153 lines
4.0 KiB
PowerShell
153 lines
4.0 KiB
PowerShell
Write-Host "=== Configuration complète du projet GTA ===" -ForegroundColor Cyan
|
|
|
|
# 1. Créer la structure
|
|
Write-Host "`n1. Création de la structure..." -ForegroundColor Yellow
|
|
$dirs = @(
|
|
"C:\GTA\project\public\backend",
|
|
"C:\GTA\project\public\backend\uploads",
|
|
|
|
"C:\GTA\project\src"
|
|
)
|
|
|
|
foreach ($dir in $dirs) {
|
|
if (!(Test-Path $dir)) {
|
|
New-Item -Path $dir -ItemType Directory -Force | Out-Null
|
|
Write-Host " ✓ Créé: $dir" -ForegroundColor Green
|
|
}
|
|
}
|
|
|
|
# 2. Backend package.json
|
|
Write-Host "`n2. Création de package.json..." -ForegroundColor Yellow
|
|
$backendPackage = @"
|
|
{
|
|
"name": "gta-backend",
|
|
"version": "1.0.0",
|
|
"description": "GTA Backend API",
|
|
"main": "server.js",
|
|
"scripts": {
|
|
"start": "node server.js",
|
|
"dev": "nodemon server.js"
|
|
},
|
|
"dependencies": {
|
|
"express": "^4.18.2",
|
|
"mysql2": "^3.6.5",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^16.3.1",
|
|
"multer": "^1.4.5-lts.1",
|
|
"@microsoft/microsoft-graph-client": "^3.0.7",
|
|
"@azure/identity": "^4.0.0",
|
|
"body-parser": "^1.20.2"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.0.0"
|
|
}
|
|
}
|
|
"@
|
|
|
|
Set-Content -Path "C:\GTA\project\backend\package.json" -Value $backendPackage
|
|
Write-Host " ✓ package.json créé" -ForegroundColor Green
|
|
|
|
# 3. Backend .env
|
|
Write-Host "`n3. Création de .env..." -ForegroundColor Yellow
|
|
$envContent = @"
|
|
DB_HOST=mysql
|
|
DB_USER=wpuser
|
|
DB_PASSWORD=-2b/)ru5/Bi8P[7_
|
|
DB_NAME=DemandeConge
|
|
PORT=3000
|
|
NODE_ENV=production
|
|
AZURE_TENANT_ID=9840a2a0-6ae1-4688-b03d-d2ec291be0f9
|
|
AZURE_CLIENT_ID=4bb4cc24-bac3-427c-b02c-5d14fc67b561
|
|
AZURE_CLIENT_SECRET=gvf8Q~545Bafn8yYsgjW~QG_P1lpzaRe6gJNgb2t
|
|
AZURE_GROUP_ID=c1ea877c-6bca-4f47-bfad-f223640813a0
|
|
EMAIL_FROM=gtanoreply@ensup.eu
|
|
UPLOAD_DIR=./uploads
|
|
MAX_FILE_SIZE=5242880
|
|
"@
|
|
|
|
Set-Content -Path "C:\GTA\project\backend\.env" -Value $envContent
|
|
Write-Host " ✓ .env créé" -ForegroundColor Green
|
|
|
|
# 4. Backend server.js
|
|
Write-Host "`n4. Création de server.js..." -ForegroundColor Yellow
|
|
$serverJs = @"
|
|
require('dotenv').config();
|
|
const express = require('express');
|
|
const cors = require('cors');
|
|
|
|
const app = express();
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
app.get('/health', (req, res) => {
|
|
res.json({
|
|
status: 'ok',
|
|
timestamp: new Date().toISOString(),
|
|
env: {
|
|
dbHost: process.env.DB_HOST,
|
|
dbName: process.env.DB_NAME
|
|
}
|
|
});
|
|
});
|
|
|
|
app.get('/api/test', (req, res) => {
|
|
res.json({ message: 'Backend GTA opérationnel!' });
|
|
});
|
|
|
|
app.listen(PORT, '0.0.0.0', () => {
|
|
console.log(\`✓ Serveur démarré sur le port \${PORT}\`);
|
|
});
|
|
"@
|
|
|
|
Set-Content -Path "C:\GTA\project\backend\server.js" -Value $serverJs
|
|
Write-Host " ✓ server.js créé" -ForegroundColor Green
|
|
|
|
# 5. Backend Dockerfile
|
|
Write-Host "`n5. Création de Dockerfile..." -ForegroundColor Yellow
|
|
$dockerfile = @"
|
|
FROM node:18-alpine AS base
|
|
|
|
RUN apk add --no-cache curl mysql-client
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package*.json ./
|
|
|
|
RUN if [ -f package-lock.json ]; then \
|
|
npm ci --omit=dev; \
|
|
else \
|
|
npm install --production; \
|
|
fi && npm cache clean --force
|
|
|
|
COPY . .
|
|
|
|
RUN mkdir -p /app/uploads && chmod 755 /app/uploads
|
|
|
|
RUN addgroup -g 1001 -S nodejs && \
|
|
adduser -S nodejs -u 1001 && \
|
|
chown -R nodejs:nodejs /app
|
|
|
|
USER nodejs
|
|
|
|
EXPOSE 3000
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
|
CMD curl -f http://localhost:3000/health || exit 1
|
|
|
|
CMD ["node", "server.js"]
|
|
"@
|
|
|
|
Set-Content -Path "C:\GTA\project\backend\DockerfileGTA.backend" -Value $dockerfile
|
|
Write-Host " ✓ Dockerfile créé" -ForegroundColor Green
|
|
|
|
# 6. Afficher le résumé
|
|
Write-Host "`n=== Configuration terminée ===" -ForegroundColor Green
|
|
Write-Host "`nFichiers créés:" -ForegroundColor Cyan
|
|
Get-ChildItem C:\GTA\project\public\Backend | Select-Object Name, Length
|
|
|
|
Write-Host "`n=== Prochaines étapes ===" -ForegroundColor Yellow
|
|
Write-Host "1. cd C:\GTA" -ForegroundColor White
|
|
Write-Host "2. docker-compose up --build -d" -ForegroundColor White
|
|
Write-Host "3. docker-compose logs -f backend" -ForegroundColor White |