"Trabajar en local, responsabilidad en el desarrollo web"
"Es de bien nacido ser agradecido"
Mi nombre es José J. Peleato Pradel
Apasionado del Clean Code, me defino como una persona adepta del conocimiento libre y gratuito.
Trabajo en Numéricco cómo Full-stack Developer PHP/JS, soy organizador de la comunidad WordPress Zaragoza y fui organizador de la WordCamp Zaragoza 2018 y 2019.
Vamos a aprender terminología sobre Docker y Lando, seremos capaces de definir ambas herramientas.
Veremos en directo cómo construir entornos de trabajo en local con Lando de una forma fácil, sencilla y rápida.
Conoceremos los principales comandos para trabajar con Lando.
Dispondremos de ejemplos para construir nuestros propios ecosistemas de desarrollo, crearemos entornos LAMP, LAMP + Node y LEMP, por último, ejecutaremos un entorno personalizado compuesto por Apache, PHP, Node.js, MariaDB, Mailhog, PhpMyAdmin, Gulp, Yarn y Deployer.
XAMP es el acrónimo para describir el conjunto de tecnologías necesarias para crear una infraestructura de un servidor web.
Linux Apache MySQL PHP
Windows Apache MySQL PHP
MacOS Apache MySQL PHP
Docker es un término polisémico, nació cómo un conjunto de herramientas que facilitan la gestión de contenedores y evoluciono en una empresa que lidera el proyecto Open Source, promoviendo soluciones para la comunidad o empresas.
Por ello, podemos hablar de Docker como empresa o Docker como proyecto de código abierto.
El proyecto de código abierto Docker, permite la automatización e implementación de aplicaciones a través del uso de contenedores y que además, se pueden ejecutar en la nube o localmente.
Proporcionando una capa adicional de abstracción a través de la virtualización en múltiples sistemas operativos (Windows, macOS y Linux).
El propósito de los contenedores es la independencia, la capacidad de ejecutar varios procesos y aplicaciones por separado, para poder hacer un mejor uso de su infraestructura, y al mismo tiempo, conservar la seguridad que tendría con sistemas separados.
Se podría resumir, en una tecnología que nos permite crear unidades independientes con un propósito único (Apache, MySQL, PHP, etc) y que la suma de todas ellas nos permite disponer de un sistema para ejecutar nuestras aplicaciones de software.
Término | Descripción |
---|---|
Contenedor | Un contenedor represente la unidad de ejecución de una sola aplicación, proceso o servicio. Instancia de una imagen de Docker. |
Imagen de contenedor | Paquete con todas las dependencias e información necesaria para la creación de un contenedor. Una vez que se crea una imagen, esta es inmutable. |
Dockerfile | Archivo de texto (script) que contiene instrucciones sobre cómo crear una imagen de Docker. Define por ejemplo las instrucciones para la instalación de software necesario. |
Término | Descripción |
---|---|
docker-compose | Herramienta de línea de comandos y formato de archivo YAML con metadatos para definir y ejecutar aplicaciones de varios contenedores. |
Volúmenes | Sistema de archivos que el contenedor puede utilizar. Puesto que las imágenes son de solo lectura, los volúmenes agregan la capa de escritura encima de la imagen del contenedor, por lo que los programas tienen acceso al sistema de archivos. |
Persistencia | Gestionado a través de los volúmenes, consiste en la acción de la no perdida de datos cuando un contenedor es eliminado o reinstalado. No se encuentra integrado en el ciclo de vida del contenedor. |
Término | Descripción |
---|---|
Repositorio | Conjunto de imágenes de Docker. Las diferentes imágenes en el repositorio pueden ser etiquetadas. |
Registro | Servicio que proporciona acceso a los repositorios. |
Docker Hub | Registro predeterminado para la mayoría de las imágenes públicas. https://hub.docker.com/ |
Término | Descripción |
---|---|
Clúster | Colección de host de Docker que se expone como si fuera un solo host. De esta manera la aplicación se puede escalar a varias instancias de los servicios repartiros entre varios hosts. |
Orquestador | Herramienta que simplifica la administración de clústeres y host de Docker. Los orquestadores permiten administrar las imágenes, los contenedores y los hosts a través de una CLI o interfaz gráfica. Los clústeres de Docker se pueden crear con Docker Swarm, Kubernetes, entre otros. |
Etiqueta | Marca o etiqueta que se puede aplicar a las imágenes para que se puedan identificar. |
«A Liberating Dev Tool For All Your Projects» – Lando.
«Lando es una herramienta qué humaniza el trabajar en local con Docker» - JJPeleato.
Una de sus principales características es simplificar enormemente el habilitar infraestructuras complejas en local y permitir el centrarnos en el desarrollo de Software y crear valor a nuestros clientes.
«Avoid the built-in-masochism of directly using docker or docker-compose» – Lando.
Lando es una herramienta para desarrolladores que quieren dejar atrás el masoquismo que supone usar directamente docker o docker-compose.
Para poder utilizar Lando lo primero que debemos hacer es instalarlo en nuestro ordenador. El proceso de instalación es muy sencillo y lo tienes muy bien explicado en la documentación oficial.
Si estás en Linux, debes tener instalado Docker Community Edition. Si estás en Mac o Windows, el propio instalador de Lando se encargará de instalarlo.
Nota: Debes asegurarte de que tienes habilitado Hyper-V o Docker y Lando no funcionará.
Nota: No es compatible con versiones Windows 10 Home, mínimo Windows 10 Professional.
Descargaremos el instalador adecuado según nuestro sistema operativo. En el caso de Linux, descargar el fichero lando-*.deb e instalar con dpkg -i. Para macOS, usar el fichero .dmg y para Windows, el .exe.
Software (instalación recomendada) de interfaz gráfica para la administración de los contenedores de Docker. https://kitematic.com/
Lando funciona a través de un fichero YAML (.lando.yml) situado en la raíz del proyecto denominado Landofile.
Los archivos Landofile tienen la función de definir qué tipo de sistema va a crear, con qué tecnologías, servicios y herramientas.
Las recipes son la abstracción de más alto nivel de Lando, configuraciones predeterminadas de servicios, herramientas y rutas.
Dicho de otra forma, puntos de partida con las necesidades básicas para proyectos de Software, cómo por ejemplo: LAMP, LEMP, MEAN, WordPress, Drupal 8, Laravel, etc.
Comando | Descripción |
---|---|
lando version | Muestra la versión de Lando. |
lando init | Inicializa el código a utilizar con Lando. |
lando start | Iniciar e instalar los contenedores Docker del proyecto. |
lando info | Imprime por consola información relevante del proyecto. |
lando stop | Detiene los contenedores Docker del proyecto. |
lando poweroff | Detiene todos los contenedores Docker del equipo. |
lando rebuild | Reconstruye su aplicación desde cero, conservando los datos. |
lando destroy | Destruye todos los contenedores del proyecto. |
Comando | Descripción |
---|---|
lando logs | Muestra registros del proyecto. |
lando db-export [file] | Exporta la base de datos. |
lando db-import [file] | Elimina la base de datos actual e importa un archivo a la base de datos principal. |
lando ssh -s [name] | Conexión por SSH al contenedor principal o al indicado por parámetro. |
lando ssh -s [name] --user root | Conexión por SSH al contenedor principal o al indicado por parámetro. |
lando php | Permite ejecutar comando php dentro del contenedor. |
lando composer | Ejecuta comandos de Composer dentro del contenedor definido en la recipe. |
lando npm | Ejecuta comandos NPM dentro del contenedor definido en la recipe. |
Simplemente, GRACIAS