{"id":538,"date":"2023-06-23T12:37:36","date_gmt":"2023-06-23T12:37:36","guid":{"rendered":"https:\/\/aidomoticssystems.com\/?p=538"},"modified":"2024-06-26T06:25:34","modified_gmt":"2024-06-26T06:25:34","slug":"creacion-de-archivos-yaml","status":"publish","type":"post","link":"https:\/\/aidomoticssystems.com\/index.php\/2023\/06\/23\/creacion-de-archivos-yaml\/","title":{"rendered":"Creaci\u00f3n de Archivos YAML en Docker Compose"},"content":{"rendered":"<h2>Creaci\u00f3n de  archivos YAML en Docker Compose<\/h2>\n<p>A la hora de la creaci\u00f3n de archivos YAML. <a href=\"https:\/\/docs.docker.com\/compose\/\" target=\"_blank\" rel=\"noopener\">Docker Compose<\/a> utiliza un archivo YAML para definir y configurar los servicios y contenedores de una aplicaci\u00f3n. A continuaci\u00f3n, te guiar\u00e9 a trav\u00e9s de los pasos para creaci\u00f3n de archivos YAML y su configuraci\u00f3n b\u00e1sica de Docker Compose.<\/p>\n<h3>Crear un nuevo archivo YAML<\/h3>\n<p><strong>Paso 1: Crear un nuevo archivo.<\/strong> En tu editor de texto o IDE preferido, crea un nuevo archivo y n\u00f3mbralo <code><strong>docker-compose.yml<\/strong><\/code>. Este es el nombre predeterminado que Docker Compose busca al ejecutar los comandos.<\/p>\n<p><strong>Paso 2: Especificar la versi\u00f3n de Docker Compose.<\/strong> En la parte superior del archivo <strong><code>docker-compose.yml<\/code><\/strong>, debes especificar la versi\u00f3n de Docker Compose que est\u00e1s utilizando. Esto es importante ya que diferentes versiones pueden tener caracter\u00edsticas y sintaxis ligeramente diferentes. Puedes usar la siguiente l\u00ednea para especificar la versi\u00f3n 3 como ejemplo:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>version: '3'\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p><strong>Paso 3: Definir servicios y contenedores.<\/strong> A continuaci\u00f3n, comenzaremos a definir los servicios y contenedores de tu aplicaci\u00f3n. Un servicio es una definici\u00f3n de c\u00f3mo se ejecuta un contenedor y qu\u00e9 configuraci\u00f3n tiene.<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nservices:\n  mi-servicio:\n    image: nombre-de-imagen\n    ports:\n      - \"8080:80\"\n    environment:\n      - VARIABLE=valor\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<ul>\n<li><strong><code>services<\/code><\/strong>: Es la secci\u00f3n donde definimos nuestros servicios.<\/li>\n<li><strong><code>mi-servicio<\/code><\/strong>: Es el nombre que le das a tu servicio. Puedes elegir cualquier nombre que desees.<\/li>\n<li><strong><code>image<\/code><\/strong>: Especifica la imagen del contenedor que deseas utilizar para tu servicio. Puede ser una imagen de DockerHub o un registro privado.<\/li>\n<li><code><strong>ports<\/strong><\/code>: Mapea los puertos del contenedor con los puertos del host. En el ejemplo anterior, se mapea el puerto 80 del contenedor al puerto 8080 del host.<\/li>\n<li><code><strong>environment<\/strong><\/code>: Permite definir variables de entorno dentro del contenedor.<\/li>\n<\/ul>\n<p><strong>Paso 4: Agregar m\u00e1s servicios.<\/strong> Puedes repetir el paso anterior para agregar m\u00e1s servicios a tu archivo de configuraci\u00f3n de Docker Compose. Simplemente copia y pega el bloque de definici\u00f3n de servicios y c\u00e1mbiale el nombre y la configuraci\u00f3n seg\u00fan sea necesario.<\/p>\n<p><strong>Paso 5: Guardar el archivo<\/strong> Una vez que hayas terminado de definir todos tus servicios y contenedores en el archivo <code><strong>docker-compose.yml<\/strong><\/code>, guarda el archivo.<\/p>\n<h2>Creaci\u00f3n de Archivos YAML: Definici\u00f3n de servicios y contenedores en Docker Compose<\/h2>\n<p>En Docker Compose, los servicios son componentes individuales de una aplicaci\u00f3n o servicio que se ejecutan en contenedores separados. Cada servicio se define en el archivo de configuraci\u00f3n de Docker Compose y especifica la imagen del contenedor que se utilizar\u00e1, la configuraci\u00f3n de red, los vol\u00famenes, las variables de entorno y otros detalles relacionados. A continuaci\u00f3n, te explicar\u00e9 c\u00f3mo puedes definir servicios y contenedores en Docker Compose.<\/p>\n<p>Para definir un servicio en Docker Compose, debes seguir el siguiente formato:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nservices:\n  nombre-del-servicio:\n    configuraci\u00f3n-del-servicio\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>Aqu\u00ed tienes una descripci\u00f3n de los elementos clave que puedes especificar en la configuraci\u00f3n del servicio:<\/p>\n<ul>\n<li>\n<p><strong><code>nombre-del-servicio<\/code><\/strong>: Este es el nombre que le das a tu servicio. Puedes elegir cualquier nombre que desees y usarlo para hacer referencia al servicio en otras partes del archivo de configuraci\u00f3n.<\/p>\n<\/li>\n<li>\n<p><strong><code>image<\/code><\/strong>: Especifica la imagen del contenedor que se utilizar\u00e1 para el servicio. Puedes utilizar una imagen disponible en <a href=\"https:\/\/hub.docker.com\" target=\"_blank\" rel=\"noopener\">DockerHub<\/a> o una imagen personalizada de un registro privado.<\/p>\n<\/li>\n<li>\n<p><strong><code>build<\/code><\/strong>: En lugar de especificar una imagen predefinida, puedes usar la directiva <strong><code>build<\/code><\/strong> para indicar la ruta a un Dockerfile y construir la imagen en tiempo de ejecuci\u00f3n. Esto es \u00fatil cuando necesitas personalizar la imagen del contenedor.<\/p>\n<\/li>\n<li>\n<p><strong><code>ports<\/code><\/strong>: Permite mapear los puertos expuestos por el contenedor a los puertos del host. La sintaxis es <strong><code>&lt;puerto-host&gt;:&lt;puerto-contenedor&gt;<\/code><\/strong>. Por ejemplo, <code><strong>8080:80<\/strong><\/code> mapea el puerto 80 del contenedor al puerto 8080 del host.<\/p>\n<\/li>\n<li>\n<p><strong><code>volumes<\/code><\/strong>: Permite montar vol\u00famenes en el contenedor para persistir datos o compartir archivos con el host. Puedes especificar rutas de host o nombres de vol\u00famenes. Por ejemplo, <strong><code>.\/datos:\/app\/datos<\/code><\/strong> monta el directorio <strong><code>.\/datos<\/code><\/strong> del host en <strong><code>\/app\/datos<\/code> del<\/strong> contenedor.<\/p>\n<\/li>\n<li>\n<p><strong><code>environment<\/code><\/strong>: Permite definir variables de entorno que estar\u00e1n disponibles dentro del contenedor. Puedes proporcionar m\u00faltiples variables utilizando la sintaxis <code>- <strong>VARIABLE=valor<\/strong><\/code>. Por ejemplo, <code>- <strong>MYSQL_ROOT_PASSWORD=secreto<\/strong><\/code> establece la variable de entorno <strong><code>MYSQL_ROOT_PASSWORD<\/code><\/strong> en &#8220;secreto&#8221;.<\/p>\n<\/li>\n<li>\n<p>Otros elementos opcionales: Docker Compose ofrece muchas m\u00e1s opciones de configuraci\u00f3n, como <strong><code>networks<\/code><\/strong> para especificar la red a la que se unir\u00e1 el contenedor, <strong><code>depends_on<\/code><\/strong> para definir dependencias entre servicios, <strong><code>command<\/code><\/strong> para ejecutar comandos personalizados dentro del contenedor, entre otros. Puedes consultar la documentaci\u00f3n oficial de Docker Compose para obtener informaci\u00f3n detallada sobre todas las opciones disponibles.<\/p>\n<\/li>\n<\/ul>\n<p>Al definir m\u00faltiples servicios en el archivo de configuraci\u00f3n de Docker Compose, cada uno se ejecutar\u00e1 en su propio contenedor aislado y podr\u00e1s especificar la configuraci\u00f3n y las interacciones necesarias entre ellos.<br \/>\nRecuerda que puedes repetir la estructura de definici\u00f3n de servicios para agregar m\u00e1s servicios a tu archivo de configuraci\u00f3n de Docker Compose. Es importante tener en cuenta la indentaci\u00f3n correcta y la sintaxis YAML v\u00e1lida para garantizar que el archivo de configuraci\u00f3n funcione correctamente al ejecutar los comandos de Docker Compose.Esta publicaci\u00f3n est\u00e1 patrocinada por nuestros socios <a href=\"https:\/\/www.high-endrolex.com\/\" target=\"_blank\" rel=\"noopener\">Wigs<\/a><br \/>\n\u00a1Ahora est\u00e1s listo para definir servicios y contenedores en Docker Compose\t\t<\/p>\n<h2>Creaci\u00f3n de Archivo YAML :  Ejemplo<\/h2>\n<p>Aqu\u00ed tienes un ejemplo a la hora de la\u00a0 creaci\u00f3n de archivo YAML para arrancar la aplicaci\u00f3n Heimdall utilizando Docker Compose:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nversion: '3'\nservices:\n  heimdall:\n    image: linuxserver\/heimdall\n    container_name: heimdall\n    ports:\n      - \"80:80\"\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - TZ=America\/New_York\n    volumes:\n      - .\/data:\/config\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<h3>Explicaci\u00f3n del ejemplo:<\/h3>\n<ul>\n<li>\n<p><strong><code>version: '3'<\/code><\/strong>: Especifica la versi\u00f3n de Docker Compose que est\u00e1s utilizando.<\/p>\n<\/li>\n<li>\n<p><strong><code>services<\/code><\/strong>: Define la secci\u00f3n de servicios en la que se definir\u00e1 el servicio Heimdall.<\/p>\n<\/li>\n<li>\n<p><code><strong>heimdall<\/strong><\/code>: Es el nombre del servicio. Puedes elegir cualquier nombre que desees.<\/p>\n<\/li>\n<li>\n<p><strong><code>image: linuxserver\/heimdall<\/code><\/strong>: Especifica la imagen del contenedor que se utilizar\u00e1 para el servicio Heimdall. En este caso, estamos utilizando la imagen <strong><code>linuxserver\/heimdall<\/code><\/strong> disponible en DockerHub.<\/p>\n<\/li>\n<li>\n<p><code><strong>container_name: heimdall<\/strong><\/code>: Establece el nombre del contenedor como &#8220;heimdall&#8221;.<\/p>\n<\/li>\n<li>\n<p><strong><code>ports: - \"80:80\"<\/code><\/strong>: Mapea el puerto 80 del contenedor al puerto 80 del host. Esto permite acceder a la aplicaci\u00f3n Heimdall a trav\u00e9s del puerto 80 en tu m\u00e1quina local.<\/p>\n<\/li>\n<li>\n<p><strong><code>environment: - PUID=1000 - PGID=1000 - TZ=America\/New_York<\/code>:<\/strong> Define variables de entorno dentro del contenedor. En este ejemplo, estamos configurando el ID del usuario (<code>PUID<\/code>), el ID del grupo (<code>PGID<\/code>) y la zona horaria (<code>TZ<\/code>).<\/p>\n<\/li>\n<li>\n<p><strong><code>volumes: - .\/data:\/config<\/code><\/strong>: Monta el directorio local <code><strong>.\/data<\/strong><\/code> en el directorio <strong><code>\/config<\/code><\/strong> dentro del contenedor. Esto permite persistir los datos de configuraci\u00f3n de Heimdall en tu m\u00e1quina local.<\/p>\n<\/li>\n<\/ul>\n<p>Recuerda que puedes personalizar la configuraci\u00f3n seg\u00fan tus necesidades y que todas las imagenes las podras encontrar en <a href=\"https:\/\/hub.docker.com\/r\/linuxserver\/heimdall\" target=\"_blank\" rel=\"noopener\">Docker Hub<\/a>. Por ejemplo, puedes ajustar los puertos, las variables de entorno y los vol\u00famenes seg\u00fan tus preferencias y requisitos espec\u00edficos.<\/p>\n<p>Guarda este archivo como <strong><code>docker-compose.yml<\/code><\/strong> en tu directorio de trabajo y luego ejecuta el comando <strong><code>docker-compose up<\/code><\/strong> en el mismo directorio para iniciar la aplicaci\u00f3n Heimdall utilizando Docker Compose.<\/p>\n<p>Espero que te haya ayudado este tutorial de creaci\u00f3n de archivos YAML<\/p>\n<p>\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"><\/path><\/svg><br \/>\n\t\t\t\t\t\t\t\t\t\tFacebook<br \/>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"><\/path><\/svg><br \/>\n\t\t\t\t\t\t\t\t\t\tTwitter<br \/>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"><\/path><\/svg><br \/>\n\t\t\t\t\t\t\t\t\t\tLinkedIn<br \/>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 496 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"><\/path><\/svg><br \/>\n\t\t\t\t\t\t\t\t\t\tTelegram<br \/>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 496 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"><\/path><\/svg><br \/>\n\t\t\t\t\t\t\t\t\t\tPinterest\t\t\t\t\t\t\t\t\t<\/p>\n<h2>Men\u00fa del curso: Selecciona contenido ha aprender<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Domina la creaci\u00f3n de archivos YAML en Docker Compose y despliega tus aplicaciones con eficiencia en este tutorial completo.<\/p>\n","protected":false},"author":1,"featured_media":539,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[261,262],"tags":[305,311,309,306,310,51,308,304,307],"class_list":["post-538","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cursos","category-docker","tag-archivo-docker-compose","tag-archivos-yaml","tag-comandos-de-docker-compose","tag-configuracion-de-docker-compose","tag-creacion-archivos-yaml","tag-docker-compose","tag-ejemplos-de-docker-compose","tag-tutorial-de-docker-compose","tag-yaml"],"_links":{"self":[{"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":41,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts\/538\/revisions"}],"predecessor-version":[{"id":648,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts\/538\/revisions\/648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/media\/539"}],"wp:attachment":[{"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/media?parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/categories?post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/tags?post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}