Feat Docker Files
This commit is contained in:
		
							
								
								
									
										25
									
								
								frontend/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								frontend/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| # --- Etapa 1: Compilación (Build) --- | ||||
| FROM node:20-alpine AS build | ||||
| WORKDIR /app | ||||
|  | ||||
| # Copiar package.json y package-lock.json para instalar dependencias | ||||
| COPY package*.json ./ | ||||
| RUN npm install | ||||
|  | ||||
| # Copiar el resto del código fuente del frontend | ||||
| COPY . . | ||||
|  | ||||
| # Construir la aplicación de producción | ||||
| RUN npm run build | ||||
|  | ||||
| # --- Etapa 2: Servidor de Producción (Final) --- | ||||
| FROM nginx:1.25-alpine | ||||
|  | ||||
| # Copiar los archivos estáticos construidos en la etapa anterior al directorio web de Nginx | ||||
| COPY --from=build /app/dist /usr/share/nginx/html | ||||
|  | ||||
| # Exponer el puerto 80, que es el puerto por defecto de Nginx | ||||
| EXPOSE 80 | ||||
|  | ||||
| # El comando por defecto de la imagen de Nginx se encargará de iniciar el servidor | ||||
| CMD ["nginx", "-g", "daemon off;"] | ||||
							
								
								
									
										40
									
								
								frontend/proxy/nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/proxy/nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| # Define el servidor upstream para la API, usando el nombre del servicio de Docker Compose | ||||
| upstream api_server { | ||||
|     server titulares-api:8080; | ||||
| } | ||||
|  | ||||
| server { | ||||
|     listen 80; | ||||
|  | ||||
|     # Redirigir todas las peticiones que comiencen con /api/ al servicio del backend | ||||
|     location /api/ { | ||||
|         proxy_pass http://api_server; | ||||
|         proxy_set_header Host $host; | ||||
|         proxy_set_header X-Real-IP $remote_addr; | ||||
|         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|         proxy_set_header X-Forwarded-Proto $scheme; | ||||
|  | ||||
|         # Cabeceras importantes para SignalR (WebSockets) | ||||
|         proxy_http_version 1.1; | ||||
|         proxy_set_header Upgrade $http_upgrade; | ||||
|         proxy_set_header Connection "Upgrade"; | ||||
|     } | ||||
|  | ||||
|     # Redirigir todas las peticiones que comiencen con /titularesHub (para SignalR) | ||||
|     location /titularesHub { | ||||
|         proxy_pass http://api_server; | ||||
|         proxy_http_version 1.1; | ||||
|         proxy_set_header Upgrade $http_upgrade; | ||||
|         proxy_set_header Connection "Upgrade"; | ||||
|         proxy_set_header Host $host; | ||||
|         proxy_cache_bypass $http_upgrade; | ||||
|     } | ||||
|  | ||||
|     # Servir los archivos del frontend para todas las demás peticiones | ||||
|     location / { | ||||
|         root /usr/share/nginx/html; | ||||
|         index index.html; | ||||
|         # Esta línea es crucial para que el enrutamiento de React funcione correctamente (Single Page Application) | ||||
|         try_files $uri $uri/ /index.html; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user