Skip to content

Entorno de desarrollo para programación web con PHP en Docker.

License

Notifications You must be signed in to change notification settings

ijaureguialzo/dockerbox

Repository files navigation

dockerbox

Entorno de desarrollo para programación web con PHP en Docker.

Instalación

  1. Instalar Docker Desktop para Windows y macOS o Linux.

    Para evitar errores de credenciales al descargar contenedores, hay que registrarse en Docker Hub e iniciar sesión con esa cuenta en Docker Desktop.

  2. En Windows, instalar Scoop usando PowerShell:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

    Y después instalar los comandos necesarios:

    scoop install make mutagen

    En macOS hay que instalar mutagen mediante Homebrew y en Linux usando el gestor de paquetes del sistema.

  3. Añadir las entradas necesarias al fichero hosts del sistema:

    En macOS y Linux:

    sudo bash -c '{
    echo "127.0.0.1    dockerbox.test"
    echo "127.0.0.1    phpmyadmin.dockerbox.test"
    echo "127.0.0.1    phpredisadmin.dockerbox.test"
    echo "127.0.0.1    mailpit.dockerbox.test"
    echo "127.0.0.1    vite.dockerbox.test"
    } >> /etc/hosts'

    En Windows (desde un terminal con privilegios de administrador):

    (
    echo 127.0.0.1    dockerbox.test
    echo 127.0.0.1    phpmyadmin.dockerbox.test
    echo 127.0.0.1    phpredisadmin.dockerbox.test
    echo 127.0.0.1    mailpit.dockerbox.test
    echo 127.0.0.1    vite.dockerbox.test
    ) >> %SystemRoot%\System32\drivers\etc\hosts

    En macOS y Windows se puede modificar la resolución de DNS para que todos los dominios .test se redirijan automáticamente a localhost y no tener que editar a mano el fichero /etc/hosts.

  4. Clonar este repositorio:

    git clone https://github.com/ijaureguialzo/dockerbox.git

    Si el comando anterior no funciona, habrá que instalar Git en el sistema.

  5. En un terminal, situarse en la carpeta dockerbox (o si se ha renombrado, la que contenga este archivo README.md):

    cd dockerbox
  6. Copiar el fichero env-example a .env:

    En macOS y Linux:

    cp env-example .env

    En Windows:

    copy env-example .env

    ⚠️ Es recomendable cambiar las contraseñas por defecto.

  7. Arrancar los servicios:

    make start

    ⚠️ La primera vez tardará varios minutos en crear los contenedores y unos 30 segundos en generar los certificados digitales; la web dará error hasta que termine.

Servicios

Utilidades

  • Acceso mediante shell al contenedor de php:

    make workspace
  • Actualizar los contenedores:

    make build

(Opcional) Añadir un nuevo sitio web

  1. Crear una nueva carpeta sites/nuevo_sitio con el contenido del nuevo sitio web.

    El script de arranque busca carpetas dentro del directorio sites y las publica en el servidor web:

    • Si encuentra un subdirectorio nuevo_sitio/public o nuevo_sitio/laravel/public, usará esa carpeta como raíz del sitio web.
    • Si no, publicará la carpeta nuevo_sitio directamente.

    Independientemente de si hay carpeta public o no, el nuevo sitio siempre se llamará nuevo_sitio.dockerbox.test.

  2. Editar como root el fichero /etc/hosts (en macOS y Linux) o en Windows y añadir una nueva línea:

    127.0.0.1    nuevo_sitio.dockerbox.test
    
  3. Recargar los contenedores web:

    make reload
  4. Acceder al nuevo sitio.

(Opcional) Depurar con Xdebug y PhpStorm

  1. Instalar la extensión para el navegador y activar la depuración.
  2. Habilitar la escucha de conexiones de depuración en PhpStorm haciendo click en el icono: Icono de escucha de conexión de Xdebug
  3. Fijar un breakpoint y cargar la página en el navegador.

(Opcional) Habilitar el puerto de MariaDB en localhost

En vez de arrancar los contenedores con start usar start-expose-mariadb:

make start-expose-mariadb

Estructura de dockerbox

Diagrama de contenedores de dockerbox