Durante este puente me decidía a configurar un ordenador Windows que tengo en casa para poder desarrollar en él en mis ratos libres, para tener un entorno separado del ordenador del trabajo. Hacía mil años y medio que no configuraba un Windows para desarrollar, y decidí utilizar la AI de GPT para que me guiara en el proceso. Siendo un usuario de Mac desde hace años, y que la relación con Windows se había reducido a una relación de multimedia, tengo que decir que el proceso ha resultado ser bastante fluido, aparecieron un par de problemas, que tuvieron una solución sencilla, y en un par de horas el equipo estaba listo para desarrollar. Las diferencias entre los dos sistemas operativos son mínimas hoy en día, y me ha sorprendido muy gratamente la integración de virtualización que lleva Windows por defecto, un comando y descargas e instalas un servidor Ubuntu,...
Configurar un entorno de desarrollo puede ser un desafío, especialmente al cambiar de sistema operativo. En esta publicación, te guiaré a través del proceso de configurar un entorno de desarrollo Laravel con Docker en Windows, resaltando los problemas encontrados y sus soluciones.
Empezamos con la instalación de Docker Desktop en Windows, una plataforma esencial para ejecutar aplicaciones en contenedores.
Nos encontramos con errores relacionados con la configuración de WSL 2 (Windows Subsystem for Linux).
Activamos la característica de Plataforma de Máquina Virtual de Windows y aseguramos que la virtualización estuviera habilitada en la BIOS.
Para crear un proyecto Laravel, necesitamos PHP y Composer, un gestor de dependencias de PHP.
PHP mostró errores por la falta de extensiones como curl, mbstring y zip.
Revisamos y editamos el archivo php.ini para asegurarnos de que la extension_dir estuviera correctamente configurada y que las extensiones necesarias estuvieran habilitadas.
Con PHP y Composer listos, creamos un nuevo proyecto Laravel.
En el directorio del proyecto Laravel, creamos un docker-compose.yml. Este archivo define los servicios: PHP, Nginx y MySQL.
Este es un ejemplo del archivo que me propuso GPT4:
version: '3.8' services: app: image: php:8.1-fpm container_name: laravel_app volumes: - ./:/var/www working_dir: /var/www networks: - laravel webserver: image: nginx:alpine container_name: laravel_webserver ports: - "8080:80" volumes: - ./:/var/www - ./docker/nginx:/etc/nginx/conf.d depends_on: - app networks: - laravel db: image: mysql:5.7 container_name: laravel_db ports: - "3306:3306" environment: MYSQL_DATABASE: laravel MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpassword volumes: - dbdata:/var/lib/mysql networks: - laravel networks: laravel: driver: bridge volumes: dbdata: driver: local
Establecimos Nginx como servidor web y MySQL para la base de datos.
Este es un ejemplo de como quedo configurado:
server { listen 80; server_name linter-windows-test.test; index index.php index.html; root /var/www/public; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
Inicialmente, hubo problemas para conectar con el servidor local a través del dominio personalizado http://linter-windows-test.test.
Actualizamos el archivo de hosts de Windows (C:\Windows\System32\drivers\etc\hosts) agregando una entrada para redirigir linter-windows-test.test a 127.0.0.1. Esto permite que el navegador encuentre y cargue la aplicación desde el entorno Docker local.
Para la gestión de bases de datos, recomendamos herramientas como MySQL Workbench (descarga aquí) y DBeaver (descarga aquí), ambas compatibles con Windows y capaces de conectarse a MySQL en Docker.
Al final, logramos configurar un entorno de desarrollo Laravel funcional en Windows usando Docker, superando los desafíos técnicos comunes en el camino. Este entorno nos permite desarrollar aplicaciones Laravel de manera eficiente, aprovechando las ventajas de Docker.
Usamos cookies de terceros con fines analíticos, en resumen solo usamos las cookies de Google Analytics para poder analizar nuetro tráfico.