Software Consulting Services
software de gesstion de recursos

¿Cómo hacer el mapeo de puertos de Dockerfile?

April 08, 2025

Tags: Tecnologías
dockerfile roadmap

 

Si estás trabajando con Docker y te preguntas cómo mapear puertos desde un Dockerfile, es importante aclarar algo de entrada: no se puede hacer el mapeo directamente en el Dockerfile. Lo que sí se puede hacer es exponer el puerto que la aplicación usará dentro del contenedor. El mapeo real se define fuera del Dockerfile, al ejecutar el contenedor.

 

Veamos un ejemplo típico. Supongamos que tienes una aplicación Node.js que corre en el puerto 3000. Tu Dockerfile debería verse así:

 

FROM node:18
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]

 

La línea EXPOSE 3000 no hace el mapeo como tal, solo indica que el contenedor puede aceptar conexiones por ese puerto. Es una forma de documentar y de facilitar configuraciones automatizadas, pero no expone el puerto al exterior por sí sola.

 

El mapeo real ocurre al ejecutar el contenedor, por ejemplo:

 

docker build -t mi-app .
docker run -p 8080:3000 mi-app

 

Con -p 8080:3000 le estás diciendo a Docker que el puerto 8080 del host se redirige al puerto 3000 del contenedor. Esto te permite acceder a la app en localhost:8080. Si necesitas correr varias instancias puedes variar el puerto externo:

 

docker run -p 8081:3000 mi-app
docker run -p 8082:3000 mi-app

 

En entornos más complejos, como con Docker Compose, también se puede definir el mapeo desde el archivo de configuración:

 

version: '3'
services:
  web:
    build: .
    ports:
      - "8080:3000"

 

Ahí defines que el puerto 8080 del host se conecte con el 3000 del contenedor, respetando la misma lógica.

 

Buenas prácticas para un roadmap de Dockerfile

 

: no expongas puertos innecesarios, limita el acceso a servicios sensibles y utiliza redes personalizadas cuando trabajes con múltiples contenedores. Esto reduce la superficie de ataque y mejora la organización.

 

Según la documentación oficial de Docker, EXPOSE es puramente declarativo. Herramientas como Kubernetes o Docker Swarm pueden usar esa información para automatizar configuraciones, pero el mapeo siempre debe definirse explícitamente.

 

En resumen: usa EXPOSE para documentar, y -p o ports: para mapear puertos.

 

Si estás desarrollando una solución basada en contenedores, asegúrate de hacerlo bien desde el inicio. En Rootstack ayudamos a empresas a construir entornos Docker productivos, seguros y listos para escalar. Te acompañamos en el diseño de tu arquitectura, pipelines de CI/CD y automatización con Kubernetes.

 

¿Tu proyecto necesita una infraestructura moderna, robusta y sin fricción? Contáctanos hoy y transforma tu desarrollo con Docker.

 

Te recomendamos en video