Para suplir el bajo rendimiento de Docker en sistemas operativos como macOS y Windows, DDEV nos provee de una técnica de montaje de sistema de archivo para mejorar el rendimiento de nuestros entornos de desarrollo. Esta técnica es NFS (Network File System).
¿Qué es NFS?
NFS, o Network File System, es un protocolo de la capa de aplicación dedicado a sistemas de archivos distribuidos para almacenamiento conectado a la red (NAS). Este protocolo nos permite ver, almacenar y actualizar archivos en un equipo remoto.
Esto se consigue montando todo o parte de un sistema de archivos en un servidor, haciendo que este sistema pueda ser accesible por el cliente según los privilegios de lectura, escritura que tenga cada archivo.
En el caso de DDEV, se utiliza este protocolo para montar la porción del sistema de archivos correspondiente a nuestro proyecto en un contenedor Docker.
Pasos para habilitar NFS en macOS Catalina
En la documentación de DDEV podéis encontrar cómo habilitar NFS tanto en Windows como en Linux. Yo en este post me voy a centrar en cómo habilitar NFS en DDEV-Local bajo macOS Catalina.
Habilitar NFS en DDEV requiere de unos pasos previos de configuración muy simples:
Tenemos que proporcionar permiso de Acceso total al disco a nuestra aplicación de terminal, en este caso yo utilizo iTerm. Basta con entrar en Preferencias del Sistema > Seguridad y Privacidad > Privacidad, seleccionamos en la lista de la izquierda Acceso total al disco y en la derecha seleccionamos nuestra aplicación de terminal.
A continuación nos descargamos el script que nos proporciona DDEV en su documentación oficial (macos_ddev_nfs_setup.sh) y lo ejecutamos:
sh macos_ddev_nfs_setup.sh
Este script parará todos los proyectos de DDEV que tengamos ejecutándose, añadirá nuestro directorio home al archivo de configuración /etc/exports que nfsd utiliza y habilitará nfsd para que sea ejecutado en nuestro equipo.
Ahora solamente tenemos que habilitar NFS en nuestro proyecto DDEV. Bien poniendo a true la propiedad nfs_mount_enabled en .ddev/config.yaml, o ejecutando en la terminal:
ddev config --nfs-mount-enabled=true
Con esto podremos mejorar nuestro workflow de trabajo con Docker for Mac y DDEV.
Actualización
A partir de la versión 1.14 de DDEV-Local tenemos la posibilidad de, por defecto, generar nuestros entornos DDEV con la configuración NFS activada, esto lo podemos hacer lanzando el comando:
ddev config global --nfs-mount-enabled
Gracias a @randyfay por el chivatazo.
Otros posts sobre DDEV
Si quieres saber más sobre desarrollo local con Docker utilizando la herramienta DDEV puedes leer los siguientes posts: