 Buenas tardes Warpressers, buenos días, buenas noches, allá donde estáis. Bienvenidos al segundo día de esta fantástica Workham España Online 2020. Ayer fundía espectacular, con un montón de grandes momentos, grandes charlas y hoy no va a ser menos. No os voy a entretener mucho porque tenemos con nosotros al primer ponente de la jornada en este track B, el gran José Javier Peleato, pero antes de presentarle un par de recordatorios ¿vale? Recordad que podéis escribir vuestras preguntas en el chat de YouTube, pero os recomendamos que lo hagáis en los cinco últimos minutos de la charla para que así podamos rescatarlas ¿de acuerdo? Y otra cosa, las charlas quedan todas grabadas. En unos días estarán en WordPress TV, WordPress.tv, pero si queréis ver el stream de lo que ocurrió ayer podéis ir a la página de la Workham Spain y en el menú programa, video días previos y ahí podéis verlo. Y nada, vamos adelante con José Javier. José Javier es organizador de la comunidad WordPress en Zaragoza, se define como una persona adepta al conocimiento libre y gratuito, apasionado del Pixel Perfect, del Clean Code, trabaja como full stack developer PHP y JavaScript y por todas estas palabras pues ya sabéis que estamos ante una charla un poco técnica. Así que viene a hablarnos del Ando, una herramienta para crear entornos en el local de manera fácil y cómoda, así que vamos con ello, todo tuyo. Muchas gracias por la presentación, muy buenas a todos y bienvenidos a esta primera charla del segundo día de la organización, bienvenidos a la ponencia de la herramienta Docker Human Friendly en Lando, trabajar en local es una responsabilidad en el desarrollo web. Antes de comenzar es de bien nacido, ser agradecido y me gustaría dar las gracias a la organización Workham España por dejarme formar parte de este pedazo de congreso que están haciendo y han organizado ya todas las personas que hay que hay detrás haciendo un excelente trabajo. Ya me ha presentado el compañero, me ha presentado un me llamo José, soy de Huesca, como ha comentado el compañero pues bueno soy bastante adepto del conocimiento libre y gratuito y por eso me hace especial ilusión el poder participar en este congreso y en la comunidad y en la comunidad de WordPress España. Trabajo en numérico como Fulestag de PHP y soy organizador de la comunidad de WordPress Zaragoza desde 2016 y también organizé la Workham Zaragoza 2018-2019 y participé como voluntario de 2020. Antes de continuar me gustaría hacer un pequeño disclaimer, a través de este enlace vais a poder acceder a lo que es la presentación que ya está colocada y podréis seguir a lo largo que yo voy avanzando con la presentación, podréis revisarla y verla junto conmigo. Cuando hice la descripción de esta ponencia hice dos preguntas que son las siguientes. Quiero utilizar Docker, la respuesta es sí, y tengo que aprender Docker, saber Docker para utilizar Lando, no es necesario saber absolutamente nada de Docker para poder utilizar Lando y a la vez aprovecharse de todo el potencial que tiene Docker. En la presentación de hoy lo que vamos a hacer es conocer un poquito de terminología sobre Docker y Lando, también veremos en directo como construir diferentes entornos con Lando de forma muy fácil rápida y los principales comandos. También disponemos de ejemplos para construir nuestros propios ecosistemas, crearemos un entorno Lamp, un entorno Lamp con Node, Lamp, también construiremos un entorno personalizado con PHP, o sea Apache, PHP, Node.js, MariaDB, MailHook, PHP Amnit, Wulp, Yarm y Deployer. Si no conocí las herramientas de MailHook y Deployer os lo contaremos adelante, pero os hago un inciso sobre Deployer, Deployer es una herramienta construida en PHP para la automatización de despliegue, la verdad que es super potente y daría mucho que hablar para otra presentación. Pues bueno, antes de comenzar a hablar de Lando, quiero hablar sobre ¿Qué es SAM? ¿Por qué motivo quiero hablar sobre ¿Qué es SAM? Porque WordPress necesita un entorno SAM para poder funcionar y SAM es el acrónimo que describe el conjunto de tecnologías necesarias para crear una infraestructura en un servidor web. ¿Qué significa esto? Pues bueno, SAM es ese acrónimo donde la X define el sistema operativo, la viene del servidor de Apache, la M viene del gestor de base de altos MailSQL en MariaDB o MariaDB y la P viene en nuestro caso de los proyectos WordPress de PHP, pero que sepáis también puede ser P, Lopaito y en el caso de entornos de Windows, entornos de Mac, se le denomina Wamp o Mamp. Aquí tenéis unos accesos a lo que es la wiki para que podréis leer más sobre este tema. Pues bueno, vamos a comenzar sobre uno de los principales plátures fuertes de la charla, que es Docker. Pues bueno, os he puesto aquí también unos enlaces a su página oficial, documentación y a su proyecto de Riga para que podáis acceder y echarles un vistazo. Docker es un término polisémico que nació como un conjunto de herramientas que facilitan la gestión de contenedores y evolucionó hacia un proyecto opensource. Entonces lo que podemos hablar de Docker, podemos hablar de Docker como empresa y Docker como un proyecto de código abierto. Si hablamos como un proyecto de código abierto, Docker permite la automacización y implementación de aplicaciones a través del uso de contenedores. Esto que significa que nos proporciona una capa adicional de extracción para poder virtualizar en múltiples sistemas operativos. Docker funciona tanto en Windows como en MacOS como en Linux. El propósito de los contenedores es la independencia, es la capacidad de ejecutar estos procesos por separado y construir una infraestructura que al mismo tiempo conserve la seguridad de cada uno de esos servicios que están separados y son independientes. Esto se podría resumir en que es una tecnología que nos permite en crear unidades independientes con un propósito único. Tendríamos un contenedor que es Apache, tendríamos otro contenedor que es MySQL, otro contenedor que es PHP y que la suma de todas ellas nos permite el disponer de un entorno LAN, por ejemplo, para hacer funcionar nuestras aplicaciones software o, en nuestro caso, para hacer funcionar a WordPress. Vamos a continuar hablando sobre un pequeño glossario de terminología que existe en Docker para que no se resulte raro cuando a largo de la presentación lo veamos utilizando o que en algunas conversaciones surjan estos términos. Aquí en más información lo que ha hecho es facilitaros también un enlace al glossario oficial de Docker donde tenéis aquí todos los términos y podéis ampliar la información. Bueno, dentro de estos términos de los más importantes que he considerado está el término de contenedor que es lo que hemos hablado anteriormente, que contenedor es esa unidad de ejecución de una sola aplicación, proceso o servicio. Es la distancia de una imagen de Docker, es lo que hablábamos anteriormente. Muchas veces hace un chimil con los marcos grandes de mercancías, por eso también muchas veces veréis lo que es el logotipo de Docker, que es una ballena con contenedores encima, que cada uno de esos contenedores tienen su propio, digamos, proceso o servicio y es independiente a lo que contiene los otros contenedores. Luego está el término de imagen de contenedor, que la imagen de un contenedor es el paquete con todas las dependencias y información necesaria para la creación de este contenedor. Una vez que se crea una imagen, ésta es inmutable, es muy importante también saber esto en el ciclo de vida de los contenedores de Docker. Luego está el término de Dockerfile, que luego también en Lando esto lo extenderemos. Dockerfile es un archivo de texto que contiene las instrucciones para crear una imagen de Docker. Define todas las instrucciones para la instalación de nuestro software necesario. En definitiva, es un script, un script que nosotros un archivo de texto que nosotros tenemos ahí para poder a partir de él construir, digamos, construir los contenedores. Luego está el término de Docker Compose. Docker Compose es una herramienta de línea de comandos y que trabaja con un archivo Jammer, que define los metadatos para ejecutar aplicaciones en varios contenedores. Luego tenemos el término de volúmenes, que es el sistema archivos que el contenedor puede utilizar. Los volúmenes, digamos ya que las imágenes son de solo lectura, digamos que los volúmenes serían aquella capa de escritura que necesita, que necesita los programas para poder hacer uso de ese sistema de archivos. Luego existe el término de persistencia, que es la persistencia. La persistencia se gestiona a través de los volúmenes y consiste en la acción de la no perdida de datos cuando un contenedor es eliminado o re instalado. Es muy importante conocer que la persistencia no es un cuenta integrado dentro del ciclo de vida del contenedor y que se utiliza en los casos de que un contenedor es eliminado, que no se pierda esa información importante que nosotros estábamos trabajando dentro de ese contenedor. Continuamos. Luego está el término de repositorio, que el repositorio es el conjunto de imágenes de Docker. Las diferentes imágenes están facilitadas en un repositorio y están agrupadas bajo etiquetas, bajo tax. Luego existe el término de registro, que es el servicio que proporciona acceso a estos repositorios. Y luego está el término de Docker Hub, que es el registro para el terminado para la mayoría de imágenes publicas. Aquí podéis aguindir su enlace, donde podéis acceder a la página web oficial de Docker Hub, que pulsado sin querer. Continuamos. Luego está el término de cluster, que el término de cluster pues bueno es la colección del conjunto de host de Docker que se exponen como si fuera un unico host. De esta forma esto permite una de las grandes potencias que tiene Docker es la escalabilidad, el disponer de varias instancias de los servicios repartidos entre varios host y de esta forma poder construir infraestructuras que sean escalados. El término que está dor, que el término que está dor es la herramienta que simplifica la administración de cluster y host de Docker. Es la herramienta que viene a administrar las imágenes, contenedores, host a través de una clí o una interfaz gráfica. Entre las más famosas está Docker Swamp, que viene integrada con Docker y Kubernetes entre otros. Y luego está el término de etiqueta que hemos mencionado anteriormente, que viene a decir la forma de etiquetar una imagen para poder identificarla de una forma más sencilla. Una vez llegado hasta este punto, espero que todos estéis bien porque aquí dejamos ya la parte de que es Docker y vamos a hablar sobre lo que esta charla trata. ¿Qué es Lambda? Pues bueno, antes de comenzar me gustaría que sepáis que tenéis aquí también unos accesos a su página oficial, documentación y el hub. La tengo yo también abierto por aquí, donde podréis echar un vistacillo a todo lo que Lambda ofrece que sepáis que Lambda tiene una documentación súper bien construida y muchos ejemplos en su repositorio de hub, pero cuáles podéis verlos, aprender de ellos y construir vuestros propios asimos de Lambda para poder trabajar. ¿Qué es Lambda? Pues bueno, según la definición que utilizan ellos mismos, Lambda es una herramienta que viene a liberar el desarrollo para todos nuestros proyectos. O como suelo definir yo, Lambda es una herramienta que lo que hace es humanizar el trabajo en local con Docker. ¿Qué significa esto? Que sus principales características es simplificar enormemente la construcción de infraestructuras en local complejas y que nos permite a los desarrolladores centrarnos en lo que es el desarrollo software y crear valor a nuestros clientes. ¿Qué tipo de ventajas tiene Lambda? Pues bueno, yo para mí a día de hoy tienen muchísimas ventajas e infinitas ventajas. Destacaría que es una herramienta muy fácil de utilizar, luego veréis los ejemplos lo cómodo y rápida que se utiliza, que es súper completa y hasta la fecha no he encontrado límites. Supongo un pequeño ejemplo, una vez tuve que, a través de Lambda, tuve que hacer una pequeña comunicación con Http2 de cool a los servidores de Google y Apple para hacer envíos masivos de notificaciones Pusa móviles que lo construyen PHP y gracias a Lambda, dentro de los contenidos que se levantaron, habilité el cool para Http2 y esto lo hice a través de Lambda y me lo hice sin ningún tipo de problema. Luego hay una gran comunidad respaldada en GitHub exportable, tiene unas configuraciones predeterminadas iniciales, como es en el caso para poder montar un proyecto WordPress o para poder montar un stackmin o un stacklamp o un stacklamp, vienen ya configuraciones predeterminadas. Tiene un sistema super potente de sobrecritura de WordPress, la verdad que los ejemplos vamos a hacer algunos de ellos y veréis que de una forma muy sencilla vais a poder hacer WordPress de esas configuraciones predeterminadas. Una de sus principales ventajas es que es gratuito y es un proyecto open source y una de las que a mí principalmente me encanta es que puedes instandarizar un flujo de trabajo en el equipo. Puedes marcar y definir cómo se va a trabajar con el resto de tus compañeros y gracias a Lambda trabajar todos de una misma forma. ¿Por qué motivo? Porque sin duda el trabajar en local, los proyectos en desarrollo, es muy importante y es algo que cuando termine esta charra me gustaría que todos por lo menos penséis que hay que desarrollar en local y para ello utilizar Lambda nos va a beneficiar para poder imitar esos entornos de producción, tenerlos construidos en nosotros en estos entornos de local. Pues bueno, ¿por qué utilizar Lambda? Para responder esta pregunta voy a utilizar una frase que tiene en su propia documentación que a mí me encantó cuando la leí, que lo que viene a decir es que Lambda es una herramienta para desarrolladores que quieren dejar atrás el masoquismo que supone usar directamente Docker y Docker Compose. Como he dicho antes, Lambda viene a humanizar el uso de Docker para los desarrolladores en el trabajo del local y de una forma muy sencilla poder montar infraestructuras complejas con Apache, Node.js, etcétera y que esta misma infraestructura la compartamos con el resto del equipo. La instalación de Lambda es una instalación súper sencilla que viene muy bien explicada en la documentación. Aquí os he puesto un enlace a cada una de ellas y que sepáis que en la propia documentación viene explicado cómo es de proceder para hacer esta instalación. En el caso de los sistemas del Inus hay que saber que es necesario instalar previamente Docker Community Edition. Aquí os he dejado un enlace hacia un enlace donde podréis a través de esta página podréis hacer un botón derecho, darle a guardar y esto lo guardéis en un formato .sh y lo ejecutáis luego con un ssg esto lo que hará es instalar en los entornos de Lambda, lo que hará es instalarnos justamente Docker Community Edition y que sepáis que para los entornos de Mac y Windows ya viene con el propio instalador de Lambda ya te viene Docker Community Edition. Quiero hacer aquí dos anotaciones que son las siguientes que es necesario es muy importante que para instalar y trabajar con Docker Lambda tenemos habilitado la virtualización de la BIOS en BIOS y IPv en Windows 10 y también es muy importante que Lambda no funciona en este caso mejor dicho Docker no funciona en Windows 10 Home como mínimo necesitamos tener un sistema operativo de Windows 10 profesional como mínimo para poder hacer funcionar Lambda y a su vez Docker Lambda lo que hace es trabajar por debajo con Docker. Pues bueno, a BIOS he dejado un enlace para poder descargar este instalador, comentaros tres coincidios según los tres sistemas operativos, lo que haremos en el caso de Linux es descargar el punto de ejecutarlo con sudo e instalarlo con el comando de PGI y en el caso de Mavos descargar el punto de MG y en el caso de Windows descargar el punto de C. Vamos a entrar un momento y digo a la página web para que lo veáis aquí comentaros una cosilla. Lambda como tal no es aún un producto final aún sigue en Realist versiones antes de ser este producto final, ahora mismo su última versión es la 3.0.0 pero comentaros que como veis aquí nos indica que es una pre-release y aquí nos indica también que es una pre-release, esto que significa que estas son versiones que pueden tener o contener algún tipo de error, lo que normalmente lo que hace la comunidad es descargarse estas últimas versiones para poder evaluar y testear de todo de todo bien. Lo que tienes que hacer vosotros es buscar justamente, aquí hay una versión que pondrá la pre-release que no indicará que es EDGE y en este caso lo que hay que hacer es entrar aquí dentro, gestas aquí dentro, aquí abajo, ya tienes los engraces que os he comentado, veis el de MG para Mavos, el PS6193, punto X y justamente el punto D para el caso de Linux y una vez que lo tenéis lo que haremos es instalarlo como os he comentado y una vez que está instalado en el caso de Mac y de Windows, instala todo de golpe, en el caso de Linux hay que instalar primero lo que recomiendo y luego ejecutar el punto D que nos está instalando. Antes de continuar quiero hablar sobre una herramienta superchula que se llama Kitematic, que es un software que lo que hace es de una forma gráfica, de una interfaz gráfica, nos abre el poder gestionar y el poder gestionar de los contenedores que tenemos nosotros en ese momento levantados en nuestro sistema. Aquí os pongo un pequeño ejemplito de cómo es Kitematic y aquí a la izquierda tengo los diferentes contenedores que ahora mismo están parados, cuando damos los ejemplos veréis cómo se van ahí activando. Continuamos por la charla. ¿Cómo funciona Lando? Bueno, Lando funciona a través de un fichero YAML que se encuentra en la raíz de los proyectos que se llama LandoFile. Estos archivos, lo que viene a decir y a definir es qué tecnologías, servicios y herramientas van a ser utilizadas para ese proyecto Lando. Entonces de esta forma, gracias a este LandoYAML, nosotros definimos que infraestructura vamos a montar, si vamos a montar un entorno LAN para ejecutar un WordPress, un entorno LEM, con NGIS o un entorno MIM, con Angular Mongo, etc. Pues bueno, también comentaros que el Lando provee unas recetas que son, digamos, la extracción de más alto nivel del Lando, que son configuraciones ya predeterminadas, que ya tiene todo lo necesario para hacer funcionar un proyecto. Entre sus ejemplos, por ejemplo, tiene una receta para WordPress, receta para entornos LAN, receta para entornos LEM, MIM, Trupal 8, Laravel, Joomla, etc. La verdad que tiene muchas recetas y a partir de ellas tú puedes construir un LandoFile que tenga esa, es añadir esa receta, es una fila a nivel del código y a partir de ese LandoFile utiliza esta receta y luego tú si quieres puedes extender con WordPress, etc. y mejorar y proveer de más servicios lo que es lo que es la herramienta del Lando. Lando también utiliza unos comandos que nos facilita el trabajar con Docker y lo que os comentaba anteriormente lo que haces es humanizarlo. Aquí os he dejado un enlace donde podéis acceder a los diferentes comandos que provee el Lando y también comentaros que anteriormente os he comentado sobre el tema de los servicios de Docker y que puedes llegar a construir. Lo tenía de version por aquí. Aquí de izquierda para que veáis todos los servicios que provee el Lando Apache, Compose, MailHoon, MariaDB, por ejemplo, para Barney, StoneCAD, Soler, Ruby, Python, PHP, para que veáis todos estos servicios son servicios que los puedes utilizar gracias al Lando y que a través del LandoFile podéis hacer luego un LandoStar y automáticamente atendréis toda esta infraestructura gracias a estos servicios. Continuamos con la presentación. Aquí en los comandos os voy a destacar los que yo considero que son más importantes. Tenemos, pues bueno, LandoVersion, InEstart, InfoStop. Normalmente en el día a día lo que más se suele utilizar es LandoStar, LandoStop, LandoInfo y PowerOff. Luego que sepáis que vosotros si cambieis alguna configuración del LandoFile podéis hacer un LandoRebuild y lo que haces es reconstruir la aplicación, digamos, en los contenedores desde 0 según las definiciones que has hecho tú en el LandoFile. Y luego también está LandoDestroy por si queréis esos contenedores eliminarlos totalmente. Una de las cosas que a mí superpotentes que hay del Lando es el LandoDevespor, el LandoDevintpor que lo haremos con un ejemplo, lo haremos un ejemplo luego. Que lo que viene a hacer es a través de este comando lo que haces es coger nuestro SQL y directamente importarlo a la base datos principal de nuestro proyecto del Lando. Y lo mismo con Codevespor. De esta forma que SQL es que pesa muchísimo, estamos hablando mejor que pueden llevar a pesar 100 megas o incluso un giga lo podéis hacer a través de línea de comandos sin ningún tipo de problemas porque lo digamos que a través de la terminal lo ejecutarías. Luego también que sepáis que tienes acceso a los logs a través del LandoLog que podéis acceder a los diferentes contenedores a través de dando SSH y especificar el nombre del contenedor que esta su vez está ya especificado en el LandoFile o también acceder como SSH como el usuario root de simplemente con este comando. También que sepáis que podéis ejecutar comandos de PHP o de Composer, NPM, WordPress, simplemente poniendo el Lando PHP, fichero PHP o tu automáticamente ejecutaría dentro de su teléver Lando este comando y ejecutaría PHP lo mismo con WordPress. Llegados a este punto, lo siguiente ya de la presentación es ver los ejemplos que sepáis que a través de este enlace podéis llegar hasta el repositorio de GitHub y en el repositorio de GitHub lo que podéis hacer es en la descripción del Rhythmi clonarnos este proyecto en local para que podáis también a la vez que yo construir los diferentes ejemplos que he ido haciendo para José, disculpa, ampliar va todo perfecto pero si puedes ampliar un poco el zoom cuando conectas con código y tal te lo agradecemos. Sí, vale, perfecto, pues ahora mismo cuando me pasa a los ejemplos ya será con el código, me voy a pasar a los ejemplos para que lo veáis, para que abro aquí el Rhythmi y con este comando podéis explorarlos el proyecto en local y a la vez que yo poder ir a hacer estas pruebas y estos ejemplos. Nada, comentaros que esto ya lo tenéis en el repositorio de GitHub público y será ya público hasta el final del tiempo para que podéis verlo. Bueno, vamos a ver cinco ejemplos sobre Lando en directo de cómo funciona, para ello yo voy a utilizar, voy a tener abierto quitemati para ver qué contenedores tengo abiertos y visual studio code para, en este caso, iré utilizando los diferentes ejemplos. El primero de todos ellos, quiero que veáis, esto es un ejemplo que es una instalación de WordPress y aquí mismo tenemos un fichetito que es un Lando.yaml que para que veáis que con este Lando.yaml simplemente con dos líneas especificando el nombre, especificando la receta, yo voy, simplemente yo entro ahora mismo a este ejemplo y hago un Lando.star, previamente ya había instalado lo que es instalado Windows, ahora mismo sin hacer absolutamente nada más, voy a tener y disponer de un entorno LAM gracias a una receta, una configuración predeterminada en WordPress y me va a levantar todo lo que necesita WordPress para hacer funcionar, ya habéis visto que ya lo tengo levantado y ahora mismo abro y acedo a través de este enlace al proyecto. Como veis, ya tengo un entorno que para hacer funcionar un entorno LAM, para hacer funcionar WordPress y ya tengo ahora mismo un WordPress montado, como veis es lo mínimo necesario para hacer funcionar un proyecto de WordPress, pero vamos a ir más allá porque digamos que aquí hay cosillas que a mí me quedarán diciendo vale pero yo quiero también saber el usuario hijos de la condición de mysql, pero si quiero utilizar mysql-wordbench o diviver para poder utilizarlo, pues bueno, que sepáis que hay un comando que es Lando Info, que lo que les viene a decir es toda esta información de lo que el Lando está ahora mismo exponiendo y que sepáis que también aquí en que temática tenemos ahora mismo lo que sería el proyecto del app server que sería WordPress y lo que sería en la tabéis que sería el contenedor de base de datos. Continuamos con el siguiente ejemplo que veáis que poco a poco vamos a ir construyendo, voy a parar este servicio con un Lando Stop y vamos a pasar al segundo cumplo en cuanto pare. Aquí en este segundo ejemplo lo que he hecho es hacer un poco más limpio lo que sería nuestro proyecto y qué he hecho pues bueno he dejado en la carpeta raíz un Lando Llame y luego dentro del public está lo que es nuestro WordPress, de esta forma nosotros tendríamos de una forma muy sencilla y cómoda en la raíz lo que es todos los archivos de configuración, Lando Llame, etcétera y de esta forma dentro el public únicamente tendríamos lo que es el proyecto de WordPress. Este Lando Llame en este caso lo que nos va a montar es un partimos de la receta de WordPress, hacemos una override especificando que quiero que utilice PHP 7.4, le digo que el web route eso significa que el document route digamos es public entonces cuando se levanta el contenedor le sabe que el document route es la carpeta public y lo que va a hacer es a partir de ahí ya ejecutar WordPress. Y en este caso no quiero utilizar MySQL, quiero utilizar la base de datos MayaDB pues aquí se lo estoy especificando. Luego también aquí comentaros que lo que he hecho es definir qué URL les quiero que tenga mi proyecto local a través de estas sintaxis de Proxy y PPServer, Database y PHP Miami, lo que hago es definir qué URLs tener así de esta forma de una forma muy cómoda pues yo puedo navegar etcétera. Y luego aparte lo que he hecho es extender y añadirle más servicios, pues bueno en a PPServer lo que hago es que ejecuten como route este comando una vez que se hace un Lando Star y luego que también sobre escribo y que coja que el puerto de la base de datos sea el 3318 y que usuario y database sea WordPress y WordPress y también lo que hago es utilizar PMA de PHP Miami también añado este servicio, entonces yo hago un Lando Star para mismo lo que voy a hacer es empezar a montar todo todo esto que hemos comentado y una vez que que nos ejecute esto ya nos proveerá nos expondrá las diferentes URLs, ahora está levantando todo aquí en que temati como veis no empieza ya a montar los diferentes contenedores como veis por ejemplo PHP Miami, a través de que temati pulso aquí y tendría acceso al PHP Miami, aquí en este WordPress ya tendría acceso a lo que es a través de PHP Miami ya tendría, ya habéis visto de una forma tan sencilla como yo estoy teniendo un entorno lamp para optimizado para WordPress, tengo PHP Miami, tengo acceso a un host para database, si quiero conectar este mysql augments o si quiero conectar los de Viver ejecutó un comando dentro del contenedor app server cuando se levanta y también comentaros que es muy importante que cuando trabajáis hablando y construir vuestro web config tenéis que saber que pues que el database es database que a su vez es el que tú defines en el landoyamer, si yo aporta ese landoyamer veréis que yo defino aquí en service en nombre y aquí en proxy en nombre de ese contenedor y aquí en el config esto digamos que yo sería nominatura del ando para a través de de digamos del vp config de WordPress directamente atacará ese host y luego ya veis que el dbname de vios y dbpassword es WordPress WordPress que es lo que yo he definido en este landoyamel aquí lo he definido ha habido un esto de aquí no se me ha habido un error si ya va a la hora de rentarse la base de datos a un lando power off para parar todos los todos los servicios estos cosas de del directo una cosa antes utilizado el ando esto para parar el proyecto es ejemplo uno ya estoy utilizando el ando power off que lo que hace es parar todos los contenedores del ando da igual que esté dentro de ese de ese proyecto el ando o no de esta forma lo que hace es parar absolutamente todo como veis lo que ha hecho es también parar el que utiliza el ando para gestionar por debajo todos estos estos proxys todo lo que lo que utilizarán por por debajo como veis ahora mismo ya tengo todo parado y lo que va a hacer es volver a levantarlo a ver si en este caso lo hace bien también comentaros que estos overrides es algo que viene muy bien explicado en lo que es la documentación si vosotros lo hacéis a lo que es la documentación de del ando veis que aquí a izquierda tenéis diferentes diferentes ejemplos y en este caso de imaginadores que digo vale quiero hacer quiero saber sobre María de ve cómo cómo hacer o trabajar o sobre escribirlo a ver si me carga vamos a decir no al ejemplo de los ejemplos del ando maria de ve maria de ve aquí tengo un ejemplo en el ando yambel para María de ve y como veis aquí me viene a explicar digamos cómo podría yo definir este servicio y cómo podría hacer sobre escritura de lo que María debe esperar que sepáis que esto de aquí es lo que he hecho yo justamente y de esta forma es sobre escrito la usuario y contraseña de la de la base de datos volvemos aquí al proyecto a ver si lo si lo levanta vamos a ver si en que te matí lo está levantando es como veis aquí está está no cambiando todos los estará creando estos volúmenes y vale ahora levantado bueno pasa nada vamos a abrir el ejemplo aquí tengo el el work press esto es un error se que está en rojo si vengo aquí a database como veis el contenido está levantado aunque nos preocupéis alguna vez veis ese mensaje en rojo porque es que a la hora de hacer levantar ese este digamos este contenedor a encontrar algún tipo de anomalía y por eso lo pinta en rojo pero como veis el proyecto de work press está esta operativo y está está funcionando pues bueno vamos a pasar al siguiente ejemplo que es el ejemplo el ejemplo 3 lo que hago es para también este servicio y en el ejemplo 3 tenemos un fictidito lango yammer que aquí lo que hago es pues bueno para que veáis que puedo montar un entorno con una versión de php 5.6 que sepáis que el ando provee hasta la 5.3 si tenéis algún proyecto muy antiguo muy viejo que sepáis que vosotros podéis construir a través de un lango file una versión de php con la 5.3 por si alguna vez lo necesitaréis y esto simplemente es tan sencillo como venir aquí y cambiarlo aquí ya no sería ya no le ha faltan nada más a hacer un lango estar automáticamente ya te montaría un entorno con de esta de esta forma vamos a hacer un clear y vamos a volver a versión 5.6 a hacer un lango estar y continuaré con la con la presentación comentaros que en este en este ejemplo lo que he hecho es hacer también un overwrite de la configuración de php ini por ejemplo lo que he hecho aquí es tener un php ini con estas con estas variables y que el ando a la hora de construirme este este entorno lamb en este caso como veis no tiro un entorno de receta de work press lo que hago es tirar un entorno de receta del am por una versión de php 5.6 le digo que el web root es directorio raíz en este caso no especifico es un directorio public y lo que hago en este caso pues bueno utilizar base de datos manera de ve y aquí especifico que tenga un patch y pini definido que aquí su vez pues le digo que coja 2 gigas de memoria limit que coja un más execution time de 360 etcétera etcétera y de esta forma el proyecto el ando luego hacer es leer este php ini y sobrescribir de la configuración predeterminada de la receta de la aquí también he definido unos proxies para definir que url van a tener la pp y el contenedor principal a ppserver datavis y php y como veis en esta receta ya no ya no he hecho nada más el cuanto esto se construya podríais ver que aquí te matéis y amantando en este caso como no es un wordpress simplemente es un fichelito que tiene un héroe lo que hago en este fichelito es tener simplemente un héroe y aquí tengo un info un info punto php para que veáis que de verdad se está ejecutando lo que es la versión 5.6 del ando tengo por aquí y vamos a ver dónde se ha abierto esto open vale perfecto y aquí hago un info punto que p y automáticamente ya estoy ya estoy con una versión de 5.6 y lo que os he comentado antes si yo quisiera cambiar esto por una versión 5 7 perdón 5 5 3 vendría aquí haría hollando revuel lo que se ejecutaría le digo que sí que automáticamente ya me va a construir otra vez todos estos contenedores en base a la configuración definida en este en este landofile sin perder nada de lo que tuviera mejor a nivel de de base de datos eso el ando lo gestione lo controla y con un lado revuel no se perdería nada ojo con un lado destruy se perdería todo pero con un lado con un lado revuel no automáticamente ahora mismo se está recreando se está recreando todos estos contenedores y ya terminamos pues una versión de landofile con la versión 5.3 voy a mientras se va montando esto voy a hablar también del ejemplo 4 que es que es que es parecido pero en este caso meto más servicios que más servicios que más servicios meto pues bueno estoy metiendo en este caso vamos a cerrar por aquí bueno vamos en este caso en el ejemplo 4 como veis no parto no parte de ninguna receta aquí ya es un landofile custom hecho por por nosotros y no parte de ninguna receta en este en este ejemplo lo que hago es montar un hendis montar un php 7.4 le digo que también monté un servicio de no de gegeis y que a su vez dentro del contenedor de node instale npm o sea npm y google la última versión de damas y herramientas y como veis aquí habilito los tooling que los tooling son opciones que expone el ando para que tú puedas ejecutar esos comandos lo que haces es lo que haces es añadir más comandos a la funcionalidad del ando por defecto en este caso lo que hago es utilizar pues que se puede utilizar lando node lando npm lando google lando composer en este vamos a abrir una segunda terminal y vamos a entrar al ejemplo al ejemplo 4 este ejemplo 4 vamos a hacer vamos a hacer un lando está y vamos a ver se ha terminado ya aquí perfecto aquí ya había terminado esto y el ejemplo que os quería enseñar es que ahora mismo aquí si yo voy al php info que tengo y visitó el info punto psp debería darme uno de los 5 6 ya no sé si lo guarda no lo guarda esto es bueno es cosa del del directora perdonáis a perdonar es que no lo guardado está el quédico no sin sin guardar ya le está sin guardar para él es la versión 5 6 perdonar pero bueno se vería la versión la versión sería la versión 5 3 la que teníamos que visualizar en ese php info vaya a parar esto de aquí y me voy a pasar a la segunda consola para ejecutar un lando está vale ya me los ha parado todos y aquí está aquí ejecuto este lando está lo dicho en este ejemplo 4 no hay ningún receta o sea no parte de ninguna receta únicamente lo que hace es partir de las configuraciones que permite el ando file lo que he hecho es nutrir está este lando file para que coja endings no de no de php 7.4 y nos está en las últimas versiones de npm y que significa esto pues bueno que a través de los comandos una vez que me pare de montar todos estos contenedores yo podría podría utilizar los comandos que hemos dicho anteriormente aquí ejemplos podría utilizar este tipo de comandos el ando php lando composer lando npm y podría pues por ejemplo en este caso tengo aquí uno de moduls con un con un packer y eso y que simplemente me instala pues una versión de jQuery pues en cuanto termine de montarse estos contenedores yo podría azotar ese el ando lando npm y estar y me ejecutaría me ejecutaría justamente el que me instalará este estos paquetes desde dentro del contenedor dentro del contenedor lando ahora mismo está aquí aún generando esta creación pues bueno como veis aquí ya se ha creado el lo que se controla en principal con la web server que si yo entro aquí en un info punto php aquí veis que está la versión 7.4 de la selección 7.4 de php pues bueno ya para montarme esto pues hago un ando en npm y está el save left y esto todo lado ando y aquí automáticamente lo que haría ya es instalarme los paquetes y yo tengo definidos en el package ya he visto una forma súper sencilla yo tengo un lando ya me quedo añadiendo más servicios y podría tener una infraestructura súper compleja pues bueno vamos a parar este este último este último ejemplo y vamos a pasar al ejemplo más grande de todos que es la versión de apache php 7.4 maya de b php manmin de ployer mail jub que es el ejemplo 5 en el ejemplo 5 es un ejemplo que digamos que con este ejemplo podréis partir en casi todos los proyectos porque cumple con muchas con muchas casuísticas yo aquí he partido en una receta de lamp para lo que hago es instalar una versión de php 7.4 le digo que el web root para tener todo organizado es public como veáis yo lo organizo de esta forma dentro de public tengo lo que es sería mi proyecto en wordpress o mi proyecto en php o lo que lo que fuera necesario y en la raíz lo que tengo es pues los packages en el composer el fichero de despliegue de ployer el lando file un file para para gol para gol etcétera aquí en este caso por ejemplo activo que tenga x de bug podéis en la documentación explica cómo poder trabajar con x de bug y con lando de una forma muy muy cómoda lo utilizo el id para chepen stone y lo tengo lo tengo configurado para en el caso de lo mismo otra vez así utilizo los proxys en este caso como veis hay más proxys es pongo más contenedores el de app server que será con apache php el de no de gegeis el de la base de datos mael hook y php miami mael hook si no lo conocéis es una herramienta que lo que hace es capturar todos los mails que se envían desde dentro de los contenedores no dejar que salgan fuera de los contenedores y visualizártelos una especie como de bandeja de entrada a través del navegador es súper súper chula como veis aquí ha añadido más servicios tengo pues app server no de gegeis y aquí en este caso le digo que me instale la última versión de npm en la última versión de jam y la última versión del google aquí en database defino cuáles son las creencias de acceso que puerto también defino mael hook le digo de qué contenedores tiene que escuchar y de qué puerto y php miami y luego aquí en lo último añado estén hago extensiones para añadir más comandos al ando el ando de no de npm ya google de ployer que simplemente lo que hace de ployer pues es ejecutar vendor vindé que está dentro de de vendor php cds pues si quieres php code sniffer y podes nifer beautifier y luego para que sepáis que también existen eventos que esto es súper potente esto que significa que si yo hago un lando estar cuando termina de hacerme el lando estar automáticamente vamos a parar un momento todo y vemos este último ejemplo lo que va a hacer automáticamente es ejecutarme estos comandos cuando termine de montarse me va a ejecutar compose el estar y me va a ejecutar npm y tal yon yon save yon dev de esta forma yo hago un lando estar y un compañero se descarga el proyecto con un gris crone no tiene nada montado hace un lando estar y automáticamente el ando ya te construye todo esto en infraestructura que instala composer y te instala npm y ya podría funcionar a partir de a partir de continuar con el proyecto a desarrollar vamos a hacer un lando estar y vamos a dejar que se que se construyan estos estos contenedores comentaros que este ejemplo lo que tengo es pues bueno es un composer de iso que lo que hace lo que hago es instalar php code sniffer y de ployer para poder ser utilizado luego tengo un deploy punto php que es una receta de de ployer simplemente con una tarea que es primer que emprime por por comando luego tengo un fichero will fill simplemente es una tarea básica de golp para poder hacer el ejemplo de aquí en el paga yon simplemente instaló como dependencia y como de dependencia y jwere y golp en este caso tengo un php cds xml para definir lo que php code sniffer va a leer de los ficheritos que tengo aquí dentro de php que le he definido yo que lea de public y de esta forma como veis tengo un una compleja infraestructura montada en local que gracias al ando la voy a poder hacer funcionar y tengo composer npm ya gul de ployer tengo mejor php miami mal y alebé apache apache 2.4 php 7.4 y luego a través de la extensión de los tulips voy a poder utilizar php code sniffer composer npm la verdad que es súper súper completo vamos a ver si los contenedores están levantando aquí estoy viendo que se está levantando php a mí como veis ya está está levantado el entorno a propese a ver que es el principal como veo también está levantado si aquí dentro de veo que lo que tenía un info punto php aquí si lo veo veis aquí ya tengo la versión 7.4 como hay visto en todo el rato abierto php esto lo cierro como veis de una forma súper sencilla y crea añadiendo más función o sea más código a lo que es nuestro ando file hemos partido de este ejemplo inicial que simplemente son dos líneas y hemos terminado con este ejemplo de aquí que lo que nos viene a montar es toda una una infraestructura aquí pues bueno ya tengo todo montadito vale quiero que veáis por ejemplo el ejemplo de mail hook vale veis aquí tenemos mail hook y yo aquí dentro tengo un fichelito dentro de public si yo vengo aquí dentro tengo aquí un fichelito que simplemente es el sem que son simplemente dentro de aquí es enviar un mail vale pues yo por la línea de comandos imaginados que tienes a hacer un envío masivo de 5 mil correos pues yo desde aquí ejecuto esto y automáticamente lo que lo que está pasando ahora mismo es que lo ha capturado la captura de mail hook y como veis dentro de mail hook está está expuesto está expuesto aquí esto no ha salido fuera de los contenedores lo está dentro de nuestro de nuestro contenedor de mail hook y de esta forma si tienes que hacer ejemplos de un envío masivo de 5 mil 10 mil correos que sepáis que podéis probar con ejemplos reales que no pasaría no pasaría nada perfecto y con esto vamos a terminar quiero que veáis un ejemplo súper sencillo de que en menos de 30 segundos o un minuto digamos vamos a montar un entorno de de workpress que es a través de de una sentencia que el propio el propio lando tiene una comando que lo tenemos aquí en el rimi que lo que nos provee es gracias a este comando poder descargar un workpress a habilitar un o sea crear un lando file con la receta de workpress y luego a partir de ahí hacer un lando star y ya terminamos operativo ya terminamos operativo un workpress voy a salir de aquí y vamos a entrar a lo que es el ejemplo el último ejemplo de plus y que lo que veáis que yo cojo el ejemplo del ejemplo del lando lo que va aquí lo ejecuto ahora mismo me va a descargar lo que necesita me está descargando la última versión la última versión de workpress está estabilitando lo que necesita y ya veis que dentro de plus ahora mismo aquí tengo un fichetito que es workpress ya tengo el proyecto vale ahora una vez que estoy aquí dentro hago un lando star ahora me voy a montar en base a este lando y a men y como veis es muy parecido al ejemplo 1 simplemente la única diferencia es que allá del web que sea la carpeta workpress y me va a montar a partir de la receta de workpress me va a montar este este entorno comentaros que una vez que esto está hecho la receta de workpress ya viene por efecto con la instalación de workpress como podéis ver aquí está la workpress y entonces que hago yo pues vengo aquí y a través del workpress me situaré dentro del proyecto y ahora mismo como veis ya me la ya la ya la ha montado yo ejecuto este lando lando workpress y lo ejecuto y acabo de generar un un vp con fich ya tengo aquí generado este vp con fich ya tendré a ver dónde está en el mismo no lo veo y no sé si he operado ahí dentro o donde lo he creado vamos a hacer una cosilla que es quitar esto y vamos a pegar aquí el lando web prescrí con fich ya es de la red y si pues me está perdonar que es que no lo autoriza acostumbrar pachepestón que me lo autoriza todo automáticamente aquí no me ha autorizado y si que es cierto que ya está la creada aquí como veis ya está creado con workpress workpress y database entonces simplemente se ha terminado ejecutarse el lando el lando star que tendríamos que verlo en kit ematic así es my first entonces yo si entro aquí como veis ya tengo aquí un workpress a instalar simplemente con esos cuatro comandos que hemos estado hemos estado viendo y en menos de un minuto si tú te haces un se les fit podrías pues montarte workpress sin ningún tipo de problema y súper rápido y súper y súper cómodo con con esto daría por finalizada lo que es la la presentación creo que el compi me va a comentar que ya quedaba un minutillo aunque por mi parte genial le haría por finalizado vuelvo por aquí pues muchísimas gracias estupendo muchísimas gracias a otros espero que les haya gustado sí sí impresionante vamos a ir con unas preguntillas que han ido dejando en el chat y así le damos continuidad yordi lópez preguntaba qué ventaja ofrece respecto a docker con tu docker file con todas las dependencias si levantas con un docker compusa a prestar puedes tenerlo todo también digamos que la digamos que el lando se nutre de docker digamos que si tú ya tienes una trayectoria con docker y ya tienes todo definido con tus proyectos con con docker compose digamos que no tendrías una una gran diferencia más allá de lo que provee los comandos el lando como exportar importar base de datos ejecutar en cualquier parte del directorio comandos del lando php lando composer lando npm etcétera pero si tú ya tienes definido tus proyectos con docker compose digamos que el lando hace exactamente también lo mismo por debajo porque ya utiliza la utilizado que lo que hace el lando es quitarte toda esa capa de aprendizaje para llegar a tú para llegar para que llegues tú a tener esa infraestructura con docker y compose bien construida y toda esa curva aprendizaje con lando la tienes súper rápido y hay visto los ejemplos digamos que diferencias a priori ninguno simplemente la curva de aprendizaje y luego los comandos que es pone que es pone el lando que a la mejor te pueden ayudar en el día a día pues el debes por el por el lando php etcétera vale mario fletes pregunta cuál es el valor promedio en megas de consumo de memoria ram de un docker si requiere un equipo potente pues bueno a ver en cuando tú están las docker en el caso de linus viene bien integrado con con el kernel de linus pero en los casos de windows y más lo que hace lo que hace es digamos hacer una especie como de virtualización no que te instala te estarán lo que entonces en el caso de mac y windows tú puedes definir cuál es el máximo de que despacio que te quiere que quieres que ocupe cuánta memoria ram de mande y que cp ususe y en el caso de linus pues a través de configuración a través de configuración también lo puedes definir por ejemplo en el trabajo tengo definido que me coja 4 gigas coja 200 gigas de espacio en disco y usé 12 pegos y en este equipo que trabajó con linus con ubuntu tiene libertad para coger todo lo que quiera tanto que el otro día por ejemplo tuve que eliminarme contenedores que tenía porque estaba estemos esta distribución son 256 gigas y tenía pues más de 50 gigas con contenedores imagenes de docker entonces el valor promedio en megas pues bueno tú lo puedes definir en docker entonces al definirlo en docker no vas a tener ningún problema en que se pase ya que la ventaja de docker es que utiliza lo que tú le dices no va a utilizar más de lo que tú le dices entonces y tú defines que coja hasta 200 gigas que coja 4 gigas de ram que coja de un soldador de cpu luego lo que va a coger esas especificaciones esas preferencias estupendo juan cadíaz pregunta que para alguien que comienza y quiere tener un entorno de desarrollo distribuido que configuración del archivo lando recomiendas como base mínima tamaño de imagen memoria etcétera pues a ver yo lo que os lo he dicho anteriormente yo por ejemplo en el trabajo tengo 200 gigas de espacio en disco 4 gigas para lo que hay 2 cpu y hasta la fecha no ha tenido ni un solo problema para para hacer funcionar todo tipo de proyectos no solo golpes sino proyectos en sinfoni en que el larabel drupal etcétera luego que también a partir de que configuración del ando llamen en el ejemplo 5 tenéis una configuración muy completa de diferentes servicios y a partir de ahí tú puedes utilizarlo en tus proyectos partiendo de de la receta por preces o sí porque en ese caso era la receta de la nada en la verdad que lo dicho en este caso con que a doquerle facilites un mínimo de 4 gigas de ram 2 podrías tirar para antes sin un sin un perfecto siga viendo preguntas mario pregunta cuáles han sido tus principales problemas usando el ando para entornos reales de desarrollo rendimiento fallas de conexión vale aquí es una de las cosas lando es una herramienta que está pensada para el desarrollo local en su propia documentación oficial ya explica que no recomiendan el uso del ando para entornos de producción para entornos de producción utiliza el propio docker y construir infraestructuras con con docker ya que ahí vas a tener la verdadera potencia de la escalabilidad de docker pero el ando es una herramienta construida para el evitar el masoquismo de la curva de aprendizaje de docker para trabajar el local y para que todo tu equipo podéis trabajar el local de a partir de ese lado llame o sea de ese landofile si estés trabajando 2 3 4 5 personas todos tenéis un landofile y un landostar y todos tenéis la misma infraestructura de para poder trabajar para para ese proyecto como digo en la página oficial del ando lo lo definen el ando es una herramienta para el trabajo de desarrollo local si algún debo pues algún sistema seguirá a aventurar a montar el ando en producción pues el ando no lo recomienda en su propia en su propia web y si y si alguien lo intenta por aprender pues bienvenido sea pero en este caso para entornos de producción se debe utilizar se debe utilizar perfecto pues bueno hay un par de preguntas más en en los comentarios sobre el proceso de despliegue pero bueno casi que todo eso mejor lo vemos lo podéis ver en el zoom porque ahora nuestro ponente va a ir a la sala de networking tenéis el enlace de ese zoom en el correo electrónico que se envió el martes ahí tenéis como como llegar allí y podéis seguir discutiendo porque así que ha sido un tema que durante toda la charla hay estado ha estado el chat venga que si esto para arriba y esto para abajo y nada darte las gracias por esta espectacular charla por el resto de life coding por todos los ejemplos y muchísimas gracias a ti por presentarme estar aquí estar aquí compartiendo esta esta primera esta prevención la organización muchísimas gracias por dejar formar parte de esta este congreso sobre todo porque creo mucho lo que es el conciento libre y la comunidad de web pres es uno de sus principios verdad y nada ahora nos vemos nos vemos en la sala de zoom echando una cerveza juntos o lo que sea pues muchísimas gracias y ha sido un placer el poder participar en este congreso muchas gracias a ti recordad podéis ir a zoom a continuar la charla de desarrollo en este track b vamos a tener ahora néstor angulo con pero entonces es word presseguro o no y simultáneamente en el track up si marcháis corriendo ahora podéis pillar el final de la charla de jose conti sobre métodos de pago en bucomers así que nada nos vemos en un momento