Comunicación entre servicios en red interna
En sistemas modernos, las aplicaciones se dividen en servicios independientes (backend y frontend). Docker permite ejecutarlos de forma aislada pero comunicados mediante redes internas.
docker --version docker ps
docker network create red_interna
Crear archivo app.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/api")
def api():
return {"mensaje": "Hola desde backend"}
Crear Dockerfile:
FROM python:3.10 WORKDIR /app COPY . . RUN pip install fastapi uvicorn CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
Construir:
docker build -t backend .
Ejecutar:
docker run -d --name backend --network red_interna backend
Crear archivo index.html:
<html>
<body>
<h1>Frontend</h1>
<script>
fetch("http://backend:8000/api")
.then(res => res.json())
.then(data => {
document.body.innerHTML += "<p>" + data.mensaje + "</p>";
});
</script>
</body>
</html>
Crear Dockerfile:
FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html
Construir:
docker build -t frontend .
Ejecutar:
docker run -d --name frontend -p 8080:80 --network red_interna frontend
Abrir navegador:
http://IP_SERVIDOR:8080
Debe mostrar mensaje del backend