{"id":1427,"date":"2026-10-29T09:58:00","date_gmt":"2026-10-29T12:58:00","guid":{"rendered":"https:\/\/www.megacloud.cl\/blog\/docker-y-docker-compose-en-un-vps\/"},"modified":"2026-10-29T09:58:00","modified_gmt":"2026-10-29T12:58:00","slug":"docker-y-docker-compose-en-un-vps","status":"publish","type":"post","link":"https:\/\/www.megacloud.cl\/blog\/docker-y-docker-compose-en-un-vps\/","title":{"rendered":"Docker y Docker Compose en un VPS: gu\u00eda para empezar"},"content":{"rendered":"<p><strong>Docker<\/strong> cambi\u00f3 la forma de publicar aplicaciones. En vez de instalar a mano cada lenguaje, librer\u00eda y base de datos en el servidor, empaquetas todo en <em>contenedores<\/em> que funcionan igual en tu computador y en producci\u00f3n. Si tienes un VPS, Docker es una de las mejores formas de aprovecharlo. En esta gu\u00eda te explicamos lo esencial para empezar.<\/p>\n<h2>Qu\u00e9 es un contenedor<\/h2>\n<p>Un contenedor es un paquete que incluye tu aplicaci\u00f3n y todo lo que necesita para funcionar: el lenguaje, las librer\u00edas y la configuraci\u00f3n. Los contenedores comparten el sistema operativo del servidor, por eso son livianos y arrancan en segundos. Cada uno queda aislado de los dem\u00e1s, as\u00ed que puedes tener varios proyectos en el mismo VPS sin que choquen sus versiones.<\/p>\n<h2>Docker Engine y Docker Compose<\/h2>\n<ul>\n<li><strong>Docker Engine<\/strong> es el motor que ejecuta los contenedores.<\/li>\n<li><strong>Docker Compose<\/strong> permite describir en un archivo <code>docker-compose.yml<\/code> todos los servicios de tu proyecto (por ejemplo, la aplicaci\u00f3n, la base de datos y Redis) y levantarlos juntos con un solo comando.<\/li>\n<\/ul>\n<h2>1. Instala Docker en tu VPS<\/h2>\n<p>Usa siempre la instalaci\u00f3n oficial de Docker para tu sistema (Ubuntu, Debian o AlmaLinux), que incluye Docker Engine y el complemento de Compose. Evita paquetes antiguos de repositorios no oficiales. Al terminar, comprueba que funciona con:<\/p>\n<pre><code>docker --version\ndocker compose version<\/code><\/pre>\n<h2>2. Describe tu proyecto con Compose<\/h2>\n<p>Un archivo <code>docker-compose.yml<\/code> b\u00e1sico para una aplicaci\u00f3n con base de datos se ve as\u00ed:<\/p>\n<pre><code>services:\n  app:\n    build: .\n    restart: always\n    env_file: .env\n    ports:\n      - \"127.0.0.1:3000:3000\"\n    depends_on:\n      - db\n  db:\n    image: postgres:16\n    restart: always\n    env_file: .env\n    volumes:\n      - datos-db:\/var\/lib\/postgresql\/data\n\nvolumes:\n  datos-db:<\/code><\/pre>\n<p>F\u00edjate en tres detalles importantes:<\/p>\n<ul>\n<li><code>restart: always<\/code> hace que los servicios vuelvan a funcionar solos si el servidor se reinicia.<\/li>\n<li>La aplicaci\u00f3n se publica en <code>127.0.0.1<\/code>, no al mundo: el acceso p\u00fablico lo har\u00e1 Nginx con HTTPS.<\/li>\n<li>La base de datos <strong>no expone puertos<\/strong> y guarda sus datos en un <em>volumen<\/em>, para no perderlos al recrear el contenedor.<\/li>\n<\/ul>\n<h2>3. Levanta los servicios<\/h2>\n<pre><code>docker compose up -d\ndocker compose ps\ndocker compose logs -f app<\/code><\/pre>\n<p>El primer comando construye y arranca todo en segundo plano; el segundo muestra el estado y el tercero los registros de la aplicaci\u00f3n en tiempo real.<\/p>\n<h2>4. Actualiza sin complicaciones<\/h2>\n<p>Cuando tengas una nueva versi\u00f3n de tu c\u00f3digo, basta con traer los cambios y reconstruir:<\/p>\n<pre><code>git pull\ndocker compose up -d --build<\/code><\/pre>\n<h2>Buenas pr\u00e1cticas<\/h2>\n<ul>\n<li><strong>Claves fuera del c\u00f3digo:<\/strong> usa un archivo <code>.env<\/code> en el servidor y no lo subas a Git.<\/li>\n<li><strong>Versiones fijas:<\/strong> indica la versi\u00f3n de cada imagen (por ejemplo <code>postgres:16<\/code>) en vez de <code>latest<\/code>.<\/li>\n<li><strong>Respalda los vol\u00famenes:<\/strong> ah\u00ed viven tus datos. Programa respaldos de la base de datos.<\/li>\n<li><strong>Limpia de vez en cuando:<\/strong> las im\u00e1genes antiguas ocupan disco; <code>docker system prune<\/code> ayuda, pero revisa qu\u00e9 borra antes de confirmarlo.<\/li>\n<li><strong>Vigila los recursos:<\/strong> <code>docker stats<\/code> muestra cu\u00e1nta memoria y CPU usa cada contenedor.<\/li>\n<\/ul>\n<h2>Qu\u00e9 tama\u00f1o de VPS necesitas<\/h2>\n<p>Docker en s\u00ed consume poco. Lo que importa es lo que corres dentro: una aplicaci\u00f3n sencilla con su base de datos funciona bien con 2 a 4 GB de RAM; si sumas varios servicios, colas o b\u00fasqueda, conviene 8 GB o m\u00e1s.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Con Docker y Docker Compose, publicar y actualizar tus aplicaciones se vuelve repetible y ordenado. Un VPS te da el control para usarlos sin restricciones.<\/p>\n<p>En <strong>Megacloud<\/strong> tienes <a href=\"https:\/\/www.megacloud.cl\/vps\">servidores VPS en Chile<\/a> con acceso root, discos SSD y la distribuci\u00f3n que prefieras para instalar Docker desde el primer d\u00eda.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qu\u00e9 son los contenedores, c\u00f3mo instalar Docker en tu VPS y c\u00f3mo publicar una aplicaci\u00f3n con su base de datos usando Docker Compose.<\/p>\n","protected":false},"author":1,"featured_media":1428,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46],"tags":[107,101,106,82],"class_list":["post-1427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps","tag-devops","tag-docker","tag-docker-compose","tag-vps"],"_links":{"self":[{"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/posts\/1427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/comments?post=1427"}],"version-history":[{"count":0,"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/posts\/1427\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/media\/1428"}],"wp:attachment":[{"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/media?parent=1427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/categories?post=1427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.megacloud.cl\/blog\/wp-json\/wp\/v2\/tags?post=1427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}