Files
GTA/setup-complete.ps1

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