{"id":582,"date":"2023-06-23T14:02:26","date_gmt":"2023-06-23T14:02:26","guid":{"rendered":"https:\/\/aidomoticssystems.com\/?p=582"},"modified":"2023-06-23T15:41:38","modified_gmt":"2023-06-23T15:41:38","slug":"despliegue-de-aplicaciones","status":"publish","type":"post","link":"https:\/\/aidomoticssystems.com\/index.php\/2023\/06\/23\/despliegue-de-aplicaciones\/","title":{"rendered":"Despliegue de aplicaciones con Docker Compose"},"content":{"rendered":"<h2>Despliegue de aplicaciones con Docker Compose<\/h2>\n<p>El despliegue de aplicaciones con Docker Compose es el proceso de utilizar Docker Compose, una herramienta de orquestaci\u00f3n de contenedores, para gestionar y coordinar la ejecuci\u00f3n de m\u00faltiples servicios y contenedores de una aplicaci\u00f3n. Docker Compose simplifica la tarea de configurar y desplegar una aplicaci\u00f3n compuesta por varios componentes en un entorno de contenedores.<\/p>\n<p>Al utilizar Docker Compose, puedes definir la configuraci\u00f3n de tus servicios y contenedores en un archivo YAML. Este archivo incluir\u00e1 detalles como las im\u00e1genes de los contenedores, los puertos expuestos, los vol\u00famenes, las redes y otras configuraciones necesarias para ejecutar los componentes de tu aplicaci\u00f3n. Docker Compose se encarga de crear y gestionar los contenedores seg\u00fan la definici\u00f3n proporcionada en el archivo YAML.<\/p>\n<p>El despliegue de aplicaciones con Docker Compose ofrece ventajas como la facilidad de configuraci\u00f3n, la reproducibilidad del entorno, la escalabilidad y la flexibilidad. Puedes definir la infraestructura necesaria para tu aplicaci\u00f3n, incluyendo servicios de base de datos, servidores web, microservicios, etc., y Docker Compose se encargar\u00e1 de orquestar y mantener su funcionamiento adecuado.<\/p>\n<h3>Levantamiento de contenedores<\/h3>\n<p>En el despligue de aplicaciones, el levantamiento de contenedores se refiere al proceso de crear y ejecutar instancias de contenedores a partir de im\u00e1genes espec\u00edficas. Cada contenedor es una entidad aislada y liviana que contiene todos los recursos necesarios para ejecutar una aplicaci\u00f3n de manera independiente.<\/p>\n<p>Para levantar contenedores con Docker Compose, sigue estos pasos:<\/p>\n<ol>\n<li>Define un archivo YAML de configuraci\u00f3n de Docker Compose.<\/li>\n<li>Especifica los servicios que deseas levantar, indicando la imagen a utilizar, los puertos expuestos, las variables de entorno, los vol\u00famenes, entre otros.<\/li>\n<li>Ejecuta el comando <code>docker-compose up<\/code> en el directorio donde se encuentra el archivo YAML para levantar los contenedores seg\u00fan la configuraci\u00f3n.<\/li>\n<\/ol>\n<p>Ejemplo de archivo YAML para levantar un contenedor de una base de datos MySQL:<\/p>\n<p>\u00a0\t\t<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nversion: '3'\nservices:\n  db:\n    image: mysql:latest\n    environment:\n      - MYSQL_ROOT_PASSWORD=mysecretpassword\n      - MYSQL_DATABASE=mydatabase\n    ports:\n      - \"3306:3306\"\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>Aqu\u00ed tienes varias variantes del comando <strong><code>docker-compose up<\/code><\/strong> que puedes utilizar para diferentes situaciones:<\/p>\n<ol>\n<li>\n<p><strong><code>docker-compose up<\/code><\/strong>: Este comando levanta todos los servicios definidos en tu archivo <strong><code>docker-compose.yml<\/code><\/strong>. Si los contenedores ya existen, intentar\u00e1 reiniciarlos.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up -d<\/code><\/strong>: La bandera <code><strong>-d<\/strong><\/code> o <strong><code>--detach<\/code><\/strong> permite que los contenedores se ejecuten en segundo plano (en modo demonio). Esto evita que los logs de los contenedores se muestren en la terminal, lo cual es \u00fatil para mantenerla limpia.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up servicio<\/code><\/strong>: Si solo deseas levantar un servicio espec\u00edfico, puedes especificarlo despu\u00e9s del comando <strong><code>up<\/code><\/strong>. Por ejemplo, <strong><code>docker-compose up db<\/code><\/strong> levantar\u00e1 solo el servicio llamado &#8220;db&#8221; definido en tu archivo <strong><code>docker-compose.yml<\/code><\/strong>.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up --build<\/code><\/strong>: Si has realizado cambios en tus archivos de c\u00f3digo fuente o en el archivo <code>Dockerfile<\/code>, puedes utilizar la bandera <code><strong>--build<\/strong><\/code> para asegurarte de que las im\u00e1genes de los contenedores se reconstruyan antes de levantar los servicios.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up --force-recreate<\/code>:<\/strong> Esta opci\u00f3n fuerza la recreaci\u00f3n de los contenedores, incluso si las im\u00e1genes o los archivos de configuraci\u00f3n no han cambiado. Puede ser \u00fatil cuando deseas asegurarte de que los contenedores se creen nuevamente desde cero.<\/p>\n<\/li>\n<\/ol>\n<p>Recuerda ejecutar estos comandos desde el directorio donde se encuentra tu archivo <code><strong>docker-compose.yml<\/strong><\/code>. Adem\u00e1s, ten en cuenta que puedes combinar diferentes opciones y utilizar m\u00faltiples servicios en el comando <strong><code>docker-compose up<\/code><\/strong> seg\u00fan tus necesidades.<\/p>\n<p>Estas son algunas de las variantes comunes del comando <strong><code>docker-compose up<\/code><\/strong> que te permiten controlar y personalizar el proceso de levantamiento de contenedores utilizando Docker Compose en el despliegue de aplicaciones.<\/p>\n<h3>Escalado de servicios<\/h3>\n<p>En el despliegue de aplicaciones, el escalado de servicios implica aumentar o disminuir el n\u00famero de r\u00e9plicas de un servicio en ejecuci\u00f3n para adaptarse a la carga o la demanda de la aplicaci\u00f3n. Permite distribuir la carga de trabajo y mejorar la disponibilidad de la aplicaci\u00f3n al tener varias instancias del mismo servicio.<\/p>\n<p>Para escalar servicios con Docker Compose, sigue estos pasos:<\/p>\n<ol>\n<li>Aseg\u00farate de haber definido servicios escalables en tu archivo YAML de Docker Compose.<\/li>\n<li>Especifica la escala deseada para cada servicio, indicando el n\u00famero de r\u00e9plicas que deseas.<\/li>\n<li>Ejecuta el comando <strong><code>docker-compose up --scale servicio=n<\/code> <\/strong>para escalar un servicio espec\u00edfico a <code><strong>n <\/strong><\/code>r\u00e9plicas.<\/li>\n<\/ol>\n<p>Ejemplo de archivo YAML para escalar un servicio web:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>version: '3'\nservices:\n  web:\n    image: nginx:latest\n    ports:\n      - \"80:80\"\n    scale: 3\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>En este ejemplo, el servicio web se escala a 3 r\u00e9plicas, lo que significa que se crear\u00e1n y ejecutar\u00e1n tres contenedores de NGINX para manejar la carga.<\/p>\n<p>Recuerda que el escalado de servicios depende de la configuraci\u00f3n y el dise\u00f1o de tu aplicaci\u00f3n, as\u00ed como de los recursos disponibles en tu entorno de ejecuci\u00f3n.<\/p>\n<p>Estos ejemplos te brindan una idea b\u00e1sica de c\u00f3mo realizar el levantamiento de contenedores y el escalado de servicios utilizando Docker Compose. Puedes adaptar y personalizar la configuraci\u00f3n seg\u00fan tus necesidades espec\u00edficas.<\/p>\n<p>Aqu\u00ed tienes varias variantes del comando <strong><code>docker-compose up --scale<\/code><\/strong> para el escalado de servicios utilizando Docker Compose para el despligue de aplicaciones:<\/p>\n<ol>\n<li>\n<p><code><strong>docker-compose up --scale servicio=n<\/strong><\/code>: Este comando escala un servicio espec\u00edfico a <strong><code>n<\/code><\/strong> r\u00e9plicas. Por ejemplo, <strong><code>docker-compose up --scale web=3<\/code><\/strong> escalar\u00e1 el servicio llamado &#8220;web&#8221; a 3 r\u00e9plicas.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up --scale servicio=n1 --scale otro_servicio=n2<\/code><\/strong>: Puedes escalar varios servicios a diferentes n\u00fameros de r\u00e9plicas en un solo comando. Por ejemplo, <strong><code>docker-compose up --scale web=3 --scale db=2<\/code><\/strong> escalar\u00e1 el servicio &#8220;web&#8221; a 3 r\u00e9plicas y el servicio &#8220;db&#8221; a 2 r\u00e9plicas.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up --scale servicio+=n<\/code><\/strong>: Si deseas agregar m\u00e1s r\u00e9plicas a un servicio ya escalado, puedes utilizar el operador <strong><code>+=<\/code><\/strong>. Por ejemplo, <strong><code>docker-compose up --scale web+=2<\/code><\/strong> agregar\u00e1 2 r\u00e9plicas adicionales al servicio &#8220;web&#8221; que ya est\u00e1 en ejecuci\u00f3n.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose up --scale servicio-=n<\/code><\/strong>: Para reducir el n\u00famero de r\u00e9plicas de un servicio, puedes utilizar el operador<strong> <code>-=<\/code><\/strong>. Por ejemplo, <code><strong>docker-compose up --scale web-=1<\/strong><\/code> reducir\u00e1 en 1 la cantidad de r\u00e9plicas del servicio &#8220;web&#8221;.<\/p>\n<\/li>\n<\/ol>\n<h2>Actualizaci\u00f3n de servicios sin tiempo de inactividad<\/h2>\n<p>En el despliegue de aplicaciones, para actualizar servicios sin tiempo de inactividad utilizando Docker Compose, puedes seguir estos pasos:<\/p>\n<ol>\n<li>\n<p>Aseg\u00farate de tener una nueva versi\u00f3n de la imagen de tu servicio preparada y disponible en un registro de im\u00e1genes de Docker (como Docker Hub o un registro privado).<\/p>\n<\/li>\n<li>\n<p>Actualiza la definici\u00f3n del servicio en tu archivo <code>docker-compose.yml<\/code> para utilizar la nueva versi\u00f3n de la imagen. Puedes hacer esto cambiando el nombre de la imagen o utilizando una etiqueta diferente.<\/p>\n<\/li>\n<li>\n<p>Ejecuta el siguiente comando para iniciar el proceso de actualizaci\u00f3n:<\/p>\n<\/li>\n<\/ol>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\ndocker-compose up -d --no-deps --build servicio\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>Explicaci\u00f3n de las opciones utilizadas:<\/p>\n<ul>\n<li><strong><code>-d<\/code><\/strong> o <strong><code>--detach<\/code><\/strong>: Permite que los contenedores se ejecuten en segundo plano.<\/li>\n<li><code><strong>--no-deps<\/strong><\/code>: Evita que se inicie cualquier servicio en dependencia del servicio que est\u00e1s actualizando.<\/li>\n<li><strong><code>--build<\/code><\/strong>: Reconstruye la imagen del servicio, incluso si ya existe una imagen con el mismo nombre.<\/li>\n<li><strong><code>servicio<\/code><\/strong>: Especifica el nombre del servicio que deseas actualizar.<\/li>\n<\/ul>\n<p>Con este comando, Docker Compose levantar\u00e1 una nueva r\u00e9plica del servicio utilizando la nueva imagen, y posteriormente detendr\u00e1 y eliminar\u00e1 la r\u00e9plica antigua. Esto garantiza un proceso de actualizaci\u00f3n sin tiempo de inactividad.<\/p>\n<p>Ten en cuenta que si tienes varios servicios que dependen del servicio que est\u00e1s actualizando, deber\u00e1s actualizarlos tambi\u00e9n en caso de que haya cambios que afecten la compatibilidad. En ese caso, agrega los nombres de los servicios adicionales despu\u00e9s de <code>servicio<\/code> en el comando anterior.<\/p>\n<p>\u00a1Con estos pasos, puedes actualizar tus servicios en ejecuci\u00f3n sin experimentar tiempo de inactividad en tu aplicaci\u00f3n!<\/p>\n<h2>Exposici\u00f3n de puertos y enlaces entre contenedores<\/h2>\n<p>En el despliegue de aplicaciones, la exposici\u00f3n de puertos y los enlaces entre contenedores son dos conceptos importantes en Docker Compose para permitir la comunicaci\u00f3n entre servicios y acceder a ellos desde el host o desde otros contenedores. A continuaci\u00f3n, te explico cada uno de ellos:<\/p>\n<h3>Exposici\u00f3n de puertos:<\/h3>\n<p>La exposici\u00f3n de puertos es el proceso de hacer que un puerto dentro de un contenedor est\u00e9 accesible desde el host o desde otros contenedores. Esto permite que los servicios en los contenedores sean accesibles desde el exterior.<\/p>\n<p>En Docker Compose, puedes exponer puertos utilizando la siguiente sintaxis en tu archivo YAML:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nversion: '3'\nservices:\n  servicio1:\n    # ...\n    ports:\n      - <puerto_host>:<puerto_contenedor>\n  servicio2:\n    # ...\n    ports:\n      - <puerto_host>:<puerto_contenedor>\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>Donde <strong><code>&lt;puerto_host&gt;<\/code><\/strong> es el puerto en el host y <strong><code>&lt;puerto_contenedor&gt;<\/code><\/strong> es el puerto dentro del contenedor.<\/p>\n<p>Por ejemplo, si deseas exponer el puerto 8080 de un servicio en el contenedor y asignarlo al puerto 80 en el host, utilizar\u00edas:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nversion: '3'\nservices:\n  mi_servicio:\n    # ...\n    ports:\n      - 80:8080\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>Esto har\u00e1 que el servicio sea accesible en <strong><code>http:\/\/localhost:80<\/code><\/strong> desde el host.<\/p>\n<h3>Enlaces entre contenedores:<\/h3>\n<p>Los enlaces entre contenedores permiten establecer una conexi\u00f3n de red entre ellos, lo que facilita la comunicaci\u00f3n y el intercambio de informaci\u00f3n.<\/p>\n<p>En <a href=\"https:\/\/docs.docker.com\/compose\/networking\/\" target=\"_blank\" rel=\"noopener\">Docker Compose<\/a>, puedes establecer enlaces entre contenedores utilizando la siguiente sintaxis en tu archivo YAML:<\/p>\n<pre data-line=\"\">\n\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nversion: '3'\nservices:\n  servicio1:\n    # ...\n  servicio2:\n    # ...\n    links:\n      - servicio1\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n<p>En este ejemplo, <code><strong>servicio2<\/strong><\/code> estar\u00e1 enlazado con <strong><code>servicio1<\/code><\/strong>, lo que permitir\u00e1 que <strong><code>servicio2<\/code><\/strong> se comunique directamente con <strong><code>servicio1<\/code><\/strong> utilizando su nombre de servicio como host.<\/p>\n<p>Ten en cuenta que a partir de Docker 1.9 y Docker Compose 1.6, se recomienda utilizar redes de tipo &#8220;bridge&#8221; en lugar de enlaces entre contenedores, ya que las redes ofrecen mayor flexibilidad y control.<\/p>\n<p>Espero que esta informaci\u00f3n te sea \u00fatil para comprender c\u00f3mo realizar la exposici\u00f3n de puertos y establecer enlaces entre contenedores utilizando Docker Compose.<\/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>Optimiza tus despliegues de aplicaciones con Docker Compose, la herramienta ideal para administrar y orquestar contenedores de forma eficiente.<\/p>\n","protected":false},"author":1,"featured_media":583,"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":[57,52,53,51,267,312],"class_list":["post-582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cursos","category-docker","tag-contenedores","tag-despliegue-de-aplicaciones","tag-docker","tag-docker-compose","tag-orquestacion-de-contenedores","tag-tutorial-gratis-docker"],"_links":{"self":[{"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts\/582","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=582"}],"version-history":[{"count":23,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts\/582\/revisions"}],"predecessor-version":[{"id":607,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/posts\/582\/revisions\/607"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/media\/583"}],"wp:attachment":[{"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/media?parent=582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/categories?post=582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidomoticssystems.com\/index.php\/wp-json\/wp\/v2\/tags?post=582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}