Ciertamente cambios a Docker nativo en Linux due un decision acertada, y es que durante mucho tiempo, mi flujo de trabajo local en Windows 11 fue el mismo que el de miles de desarrolladores: instalar XAMPP, abrir el panel de control, presionar «Start» en Apache y MySQL, y ponerme a codificar. Funciona rápido al principio, pero a medida que creces profesionalmente, esa combinación de Windows + XAMPP empieza a mostrar sus costuras.

Hoy mi entorno es completamente diferente: abandoné Windows 11, me pasé a Linux y reemplacé XAMPP por Docker.

No se trató solo de cambiar de sistema operativo, sino de profesionalizar mi entorno de trabajo. Te cuento las razones de este salto y cómo estructurar un entorno limpio con Docker en tu nuevo sistema.

El problema: Windows 11 + XAMPP y el «techo de cristal»

Trabajar con XAMPP sobre Windows genera una serie de fricciones que terminan ralentizando tu día a día:

  • El infierno de las versiones: ¿Tienes un proyecto heredado en PHP 7.4 y uno nuevo en PHP 8.3 o Node 20? Cambiar de versión en XAMPP es un proceso torpe y propenso a errores.
  • Diferencias con producción: Casi todos los servidores web corren sobre Linux. Desarrollar sobre el sistema de archivos de Windows y Apache en XAMPP garantiza que tarde o temprano te enfrentes a sorpresas de permisos o rutas al desplegar en un servidor real.
  • Rendimiento de archivos: Las capas de emulación y los antivirus en Windows suelen ralentizar proyectos con miles de archivos pequeños (como las carpetas node_modules o vendor).

La solución: Docker nativo en Linux

Al dar el salto a Linux, la tentación inmediata podría ser instalar XAMPP para Linux (LAMPP). Sin embargo, eso sería arrastrar los vicios del pasado. La verdadera ventaja de Linux es que Docker corre de forma nativa sobre el kernel, sin las capas de virtualización pesadas que requiere en otros sistemas.

Por qué esta combinación gana por goleada:

  1. Aislamiento total: Cada proyecto vive en su propia caja (contenedor). Un contenedor puede usar Node 18 y MariaDB 10.5, mientras que otro corre sobre Node 22 y Postgres 15. Cero conflictos.
  2. Rendimiento brutal: La lectura y escritura de volúmenes en Docker bajo Linux es casi instantánea comparada con Windows.
  3. Reproducibilidad: Todo tu entorno se define en un archivo de texto. Si formateas tu distro o cambias de equipo, solo necesitas clonar tu repositorio y levantar el entorno en segundos.

Estructurando un docker-compose.yml limpio

Para orquestar tus servicios sin enredarte con comandos largos, usamos Docker Compose. Este archivo YAML centraliza tu servidor web, lenguaje y base de datos:

version: '3.8'

services:
  # Servidor Web
  web:
    image: nginx:alpine
    container_name: dev_nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - app

  # Entorno de Aplicación (PHP / Node / etc.)
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: dev_app
    volumes:
      - ./src:/var/www/html

  # Base de Datos
  db:
    image: mariadb:10.11
    container_name: dev_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret_root_password
      MYSQL_DATABASE: mi_base_de_datos
      MYSQL_USER: dev_user
      MYSQL_PASSWORD: dev_password
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Conceptos clave de esta estructura:

  • volumes: Vincula tu código local (./src) directamente con el contenedor. Editas en tu editor favorito en Linux y el cambio se ve al instante en el navegador.
  • db_data: Mantiene tus bases de datos a salvo para que no se pierdan al apagar los contenedores.
  • ports: Expone el puerto para acceder desde el navegador escribiendo localhost:8080.

Comandos esenciales desde la terminal de Linux

Dile adiós a los botones de Start/Stop de las herramientas gráficas. En Linux, la terminal es tu mejor aliada:

  • Levantar todo el entorno: docker compose up -d
  • Apagar el entorno: docker compose down
  • Ver logs en tiempo real: docker compose logs -f
  • Ejecutar comandos (npm, composer, etc.) dentro del contenedor: docker compose exec app npm install

Conclusión

Migrar de Windows 11 a Linux ya es un gran paso por sí solo, pero combinarlo con Docker en lugar de acudir al viejo XAMPP cambia las reglas del juego. Eliminas incompatibilidades, aprovechas al máximo la potencia de tu equipo y adaptas tu flujo de trabajo a los estándares reales de la industria.