{"id":1314,"date":"2026-03-12T13:19:49","date_gmt":"2026-03-12T13:19:49","guid":{"rendered":"https:\/\/tooldech.com\/?p=1314"},"modified":"2026-03-12T13:19:52","modified_gmt":"2026-03-12T13:19:52","slug":"project-web-app-from-local-docker-to-production-enviroment-on-cloud","status":"publish","type":"post","link":"https:\/\/tooldech.com\/en\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/","title":{"rendered":"Project web app from local docker to production enviroment on cloud."},"content":{"rendered":"<p>Buongiorno a tutti e benvenuti in nuovo articolo di tooldech!<\/p>\n\n\n\n<p>Oggi vedremo come realizzare una migrazione di un progetto di una  web app in locale e portarlo in produzione sul cloud di <a href=\"https:\/\/aws.amazon.com\/it\/\">AWS<\/a>.<\/p>\n\n\n\n<p>In questo tutorial verranno spiegati i passaggi e i procedimenti necessari per spostare una web app locale in modo sicuro in un&#8217;ambiente di produzione su cloud.<\/p>\n\n\n\n<p>Iniziamo!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequesiti:<\/h2>\n\n\n\n<p>Prima di partire c&#8217;\u00e8 bisogno di fare la &#8220;lista della spesa&#8221; e capire cosa si \u00e8 gi\u00e0, per questo tutorial bisogna avere pronto e funzionante:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>account <a href=\"https:\/\/signin.aws.amazon.com\/signup?request_type=register\">AWS <\/a>attivo<\/li>\n\n\n\n<li>Docker funzionante e installato, ti lascio il link sull&#8217;<a href=\"https:\/\/tooldech.com\/docker-installation\/\">installazione di Docker<\/a>.<\/li>\n\n\n\n<li>una web app funzionante anche semplice, io user\u00f2 una web app di un blocco note.<\/li>\n<\/ul>\n\n\n\n<p>N.B. Questo \u00e8 un&#8217;esempio generale, per far vedere gli step da eseguire ogni migrazione in produzione in base ai contesti pu\u00f2 avere varie tipologia di architetture.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Obiettivo finale :<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-center\"><strong>Aprire Google, digitare il dominio e vedere la web app online.<\/strong><\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">1. Applicazione <\/h2>\n\n\n\n<p>Il tipo di applicazione non \u00e8 importante, potete costruire qualsiasi tipo di progetto. <\/p>\n\n\n\n<p>Ma se non avete idee lascio qui il link al repository Github per scaricare il progetto di un blocco note online.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/github.com\/Matteo29-mar\/notes-webapp\">Repository GitHub<\/a><\/p>\n\n\n\n<p>Assumiamo di avere:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Frontend (React \/ Next.js \/ Vue)<\/li>\n\n\n\n<li>Backend ( Node.js \/ Python \/ API REST)<\/li>\n\n\n\n<li>App funzionante in locale su:\n<ul class=\"wp-block-list\">\n<li><code>http:\/\/localhost:<\/code>5173 (frontend)<\/li>\n\n\n\n<li><code>http:\/\/localhost:<\/code>5174 (backend)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Questa \u00e8 la visuale che si vede accendendo l&#8217;applicazione in locale.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"1d2536\" data-has-transparency=\"true\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"620\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal-1024x620.webp\" alt=\"app local \" class=\"wp-image-1332 has-transparency\" style=\"--dominant-color: #1d2536; aspect-ratio:1.6515925873367654;width:500px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal-1024x620.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal-300x182.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal-768x465.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal-1536x930.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal-18x12.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/01\/applocal.webp 1564w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">2. Docker &amp; Docker Compose<\/h2>\n\n\n\n<p>Applicazione funzionante in locale, ora bisogna fare lo step succcessivo quella di dockerizzare per rendere portabile e standard il progetto per gli vari ambienti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Creazione Dockerfile<\/h3>\n\n\n\n<p>Creazione dei dockerfile per i due ambienti dentro al progetto.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Frontend<\/li>\n\n\n\n<li>Backend<\/li>\n<\/ol>\n\n\n\n<p>Dockerfile del frontend.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"393b3d\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1019\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr-1024x1019.webp\" alt=\"dockerfile frontend\" class=\"wp-image-1333 not-transparent\" style=\"--dominant-color: #393b3d; aspect-ratio:1.0049048635796027;width:338px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr-1024x1019.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr-300x298.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr-150x150.webp 150w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr-768x764.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr-12x12.webp 12w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerfr.webp 1172w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Dockerfile del backend.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"36393a\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerbk-1024x768.webp\" alt=\"dockerfile backend\" class=\"wp-image-1334 not-transparent\" style=\"--dominant-color: #36393a; width:344px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerbk-1024x768.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerbk-300x225.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerbk-768x576.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerbk-16x12.webp 16w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockerbk.webp 1402w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Questo punto si deve creare il docker-compose che unisca i due Dockerfile.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"313334\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"1024\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-818x1024.webp\" alt=\"docker compose\" class=\"wp-image-1335 not-transparent\" style=\"--dominant-color: #313334; aspect-ratio:0.7988339757912151;width:489px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-818x1024.webp 818w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-240x300.webp 240w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-768x961.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-1227x1536.webp 1227w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-10x12.webp 10w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose-1024x1281.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/02\/dockercompose.webp 1448w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/figure>\n<\/div>\n\n\n<p>I due Dockerfile vanno rispettivamente dentro le cartelle backend e frontend, invece il docker-compose bisogna metterlo nella root del progetto perch\u00e9 sar\u00e0 la prima cosa che viene &#8220;chiamata&#8221;<\/p>\n\n\n\n<p>Se notate c&#8217;\u00e8 una sezione caddy, caddy ci servir\u00e0 per redigere il traffico su un dominio DNS, che andremo dopo a configurare.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"414446\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"1024\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/caddy-689x1024.webp\" alt=\"caddyfile\" class=\"wp-image-1339 not-transparent\" style=\"--dominant-color: #414446; aspect-ratio:0.6728452460923146;width:328px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/caddy-689x1024.webp 689w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/caddy-202x300.webp 202w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/caddy-8x12.webp 8w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/caddy.webp 708w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/figure>\n<\/div>\n\n\n<p>Al posto di notes.tuodominio.it \u00e8 da inserire il tuo dominio che acquisterai.<\/p>\n\n\n\n<p>Ci sono varie alternative per acquistare domini, ti lascio dei link per  registrarlo.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.aranzulla.it\/come-registrare-un-dominio-1126293.html\">https:\/\/www.aranzulla.it\/come-registrare-un-dominio-1126293.html<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.register.it\/domains\/\">https:\/\/www.register.it\/domains\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.hostinger.com\/it\/domini\">https:\/\/www.hostinger.com\/it\/domini<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/it.wix.com\/domain\/names\">https:\/\/it.wix.com\/domain\/names<\/a><\/li>\n<\/ol>\n\n\n\n<p>Per questo test io usero il servizio di AWS interno <a href=\"https:\/\/aws.amazon.com\/it\/route53\/\">Route 53<\/a> per acquistare il dominio.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. Push su Git Hub<\/h2>\n\n\n\n<p>In questa sezione, parleremo di pushare tutto il progetto compreso i file docker, sul repository GitHub.<\/p>\n\n\n\n<p>Lo facciamo per avere una CI\/CD automatizzata con le recenti metodologie DevOps e per avere un punto dove conservare il codice per portarlo su diversi ambienti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Push da locale a Git hub<\/h3>\n\n\n\n<p>Prepariamo il repository Git Hub e facciamo un push, vi lascio un link di come <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-push-an-existing-project-to-github\">pushare da locale al vostro repository pubblico<\/a> .<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"12171c\" data-has-transparency=\"false\" style=\"--dominant-color: #12171c;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/repoGitHub-1024x489.webp\" alt=\"repository git hub\" class=\"wp-image-1340 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/repoGitHub-1024x489.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/repoGitHub-300x143.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/repoGitHub-768x367.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/repoGitHub-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/repoGitHub.webp 1187w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Dovremmo vedere il codice, i file docker e altri file sul repository Git Hub.<\/p>\n\n\n\n<p>Siamo pronti per il prossimo step ovvero quello di creare una macchina di prova su AWS per portare l&#8217;applicazione in cloud!<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">4. Creazione macchina in cloud<\/h2>\n\n\n\n<p>Siamo pronti.<\/p>\n\n\n\n<p>Per creare la macchina in cloud sul nostro provider di fiducia AWS!<\/p>\n\n\n\n<p>Su come si crea la macchina ci sono vari modi, ti lascio dei link per crearla pi\u00f9 come desideri:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.aws.amazon.com\/it_it\/AWSEC2\/latest\/UserGuide\/tutorial-launch-my-first-ec2-instance.html\">creare ec2 con aws<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/techexpert.tips\/it\/amazon-aws-it\/ec2-macchina-virtuale-windows\/\" type=\"link\" id=\"https:\/\/techexpert.tips\/it\/amazon-aws-it\/ec2-macchina-virtuale-windows\/\">creare ec2 windows con aws<\/a><\/li>\n<\/ol>\n\n\n\n<p>Ma la macchina deve avere almeno queste cose che consiglio:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ip pubblico e un associazione con un <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/elastic-ip-addresses-eip.html\">Elastic IP<\/a>, Un Elastic IP viene assegnato al tuo AWS account ed \u00e8 tuo fino a quando non lo rilasci.<\/li>\n\n\n\n<li>porte inbound aperte su tutto sulle 22, 80 e 443 sul tuo security group.<\/li>\n\n\n\n<li>chiave .pem per accedere in ssh<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"f2f3f4\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2-1024x498.webp\" alt=\"machine ec2\" class=\"wp-image-1342 not-transparent\" style=\"--dominant-color: #f2f3f4; aspect-ratio:2.05621967696164;width:605px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2-1024x498.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2-300x146.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2-768x373.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2-1536x746.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/ec2.webp 1632w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Fatta partire la macchina si deve agganciare Elastic IP con la macchina creata,.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Elastic IP<\/h3>\n\n\n\n<p>Molto semplice si va sulla dashboard di sinistra, e si clicca su Elastic IP.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"e9efec\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"456\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1-1024x456.webp\" alt=\"elastic ip\" class=\"wp-image-1349 not-transparent\" style=\"--dominant-color: #e9efec; aspect-ratio:2.245588936070299;width:714px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1-1024x456.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1-300x134.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1-768x342.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1-1536x685.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1-18x8.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/EIP-1.webp 1842w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Si clicca su allocate Elastic IP address, e si aggancia all&#8217;istanza creata.<\/p>\n\n\n\n<p>Se non avete impostato le regole di entrata corrette si deve andare su security group e modificare le regole per permettere il traffico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security Group<\/h3>\n\n\n\n<p>Il Security Group fa proprio questo, \u00e8 un raccoglitore di regole di entrata e uscita per far permettere il corretto raggiungimento del vostro servizio.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"f8f9f9\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7-1024x489.webp\" alt=\"security group\" class=\"wp-image-1354 not-transparent\" style=\"--dominant-color: #f8f9f9; aspect-ratio:2.0927625401928407;width:779px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7-1024x489.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7-300x143.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7-768x367.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7-1536x734.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-7.webp 1647w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Queste sono le regole che dovrebbero essere aperte, per modificarle si clicca sul link security group, nel mio caso \u00e8 launch-wizard-2 e li si va a ad aggiungere\/eliminare o modificare le regole di entrata o uscita.<\/p>\n\n\n\n<p>Per la dimostrazione \u00e8 necessario aprire 3 regole di entrata:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>regola entrata ssh 22 sorgente tutto (0.0.0.0\/0)<\/li>\n\n\n\n<li>regola entrata http 80 sorgente tutto (0.0.0.0\/0)<\/li>\n\n\n\n<li>regola entrata https 443 sorgente tutto (0.0.0.0\/0)<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"f8f9f9\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"382\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8-1024x382.webp\" alt=\"add rule inbound security group\" class=\"wp-image-1355 not-transparent\" style=\"--dominant-color: #f8f9f9; aspect-ratio:2.682706109145751;width:641px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8-1024x382.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8-300x112.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8-768x286.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8-1536x573.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8-18x7.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-8.webp 1615w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Ti troverai in questa situazione, una votla fatto puoi andare avanti.<\/p>\n\n\n\n<p>Ora si pu\u00f2 accedere alla macchina e scaricare le componenti applicative.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installazione componenti applicative<\/h3>\n\n\n\n<p>All&#8217;interno di questa macchina vanno scaricate delle componenti per permettere poi il funzionamento della nostra applicazione.<\/p>\n\n\n\n<p>La macchina che abbiamo \u00e8 grezza, senza nulla dentro si deve scaricare al suo interno gli strumenti per lavorare.<\/p>\n\n\n\n<p>In seguito ti lascio alcuni link per scaricarlo. Ma ti lascio la procedura di comandi da incollare sul terminale per questo tutorial.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.aws.amazon.com\/serverless-application-model\/latest\/developerguide\/install-docker.html\">AMI linux on ec2<\/a> con AWS<\/li>\n\n\n\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/cloud-computing\/how-to-install-docker-on-aws-ec2\/\">AMI linux on ec2<\/a> con geeksforgeeks<\/li>\n<\/ol>\n\n\n\n<p>Comandi per scaricare docker e git con la AMI di Amazon Linux.<\/p>\n\n\n\n<p>Si deve aprire la macchina e connettersi per usare i comandi.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"f7f8f8\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"485\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-6-1024x485.webp\" alt=\"connect in ec2\" class=\"wp-image-1353 not-transparent\" style=\"--dominant-color: #f7f8f8; aspect-ratio:2.113118968424728;width:543px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-6-1024x485.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-6-300x142.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-6-768x363.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-6-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-6.webp 1532w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Ci sono vari modi per accedere alla macchina:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Chiave ssh<\/li>\n\n\n\n<li>SSM session Manager<\/li>\n\n\n\n<li>Ec2 instance connect<\/li>\n<\/ul>\n\n\n\n<p>E altri, in questo test usiamo EC2 instance Connect.<\/p>\n\n\n\n<p>Una volta dentro procediamo con i comandi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1\ufe0f\u20e3 Aggiorna la macchina<\/h3>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo dnf update -y<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2\ufe0f\u20e3 Installa Docker<\/h3>\n\n\n\n<p>Su Amazon Linux \u00e8 molto pi\u00f9 semplice:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo dnf install docker -y<\/code><\/pre>\n\n\n\n<p>Avvia Docker:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo systemctl start docker<\/code><\/pre>\n\n\n\n<p>Fallo partire automaticamente al boot:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo systemctl enable docker<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">3\ufe0f\u20e3 Permetti al tuo utente di usare Docker senza sudo<\/h3>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo usermod -aG docker ec2-user<\/code><\/pre>\n\n\n\n<p>Poi ricarica il gruppo:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>newgrp docker<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">4\ufe0f\u20e3 Verifica Docker<\/h3>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker --version<\/code><\/pre>\n\n\n\n<p>Test rapido:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker run hello-world<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">5\ufe0f\u20e3 Installa Docker Compose <\/h3>\n\n\n\n<p>Amazon Linux usa il plugin:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo mkdir -p \/usr\/local\/lib\/docker\/cli-plugins<\/code><\/pre>\n\n\n\n<p>Scarica docker compose:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo curl -SL https:\/\/github.com\/docker\/compose\/releases\/download\/v2.27.0\/docker-compose-linux-x86_64 \\<br>-o \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose<\/code><\/pre>\n\n\n\n<p>Rendi eseguibile:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo chmod +x \/usr\/local\/lib\/docker\/cli-plugins\/docker-compose<\/code><\/pre>\n\n\n\n<p>Verifiy:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker compose version<\/code><\/pre>\n\n\n\n<p>\u26a0\ufe0f Nota: il comando \u00e8 <strong>docker compose<\/strong> (senza trattino).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"080808\" data-has-transparency=\"false\" style=\"--dominant-color: #080808;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"476\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker-1024x476.webp\" alt=\"command to install docker\" class=\"wp-image-1352 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker-1024x476.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker-300x139.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker-768x357.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker-1536x714.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker-18x8.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/installdocker.webp 1821w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">6\ufe0f\u20e3 Installa Git<\/h3>\n\n\n\n<p>Ti serve per clonare il repo.<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>sudo dnf install git -y<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">7\ufe0f\u20e3 Clona il tuo progetto<\/h3>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>git clone https:\/\/github.com\/TUOUSERNAME\/notes-webapp.git<br>cd notes-webapp<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">5. Dominio<\/h2>\n\n\n\n<p>Stoppiamo e prima di far partire lo stack dell&#8217;applicazione, c&#8217;\u00e8 bisogno di acquistare lo spazio web per rendere poi disponibile la nostra applicazione web.<\/p>\n\n\n\n<p>Come ho detto prima, potete comprare un dominio dove volete, io uso route 53. Proprio questo servizio da la possibilit\u00e0 di acquistare ma anche di lavorare su domini che sono stati acquistati da altre  parti.<\/p>\n\n\n\n<p>Quindi, andiamo sull&#8217;account di AWS e servizio di route 53.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"818488\" data-has-transparency=\"false\" style=\"--dominant-color: #818488;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531-1024x462.webp\" alt=\"route 53\" class=\"wp-image-1343 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531-1024x462.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531-300x135.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531-768x346.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531-1536x693.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531-18x8.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/route531.webp 1832w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Arrivati qui, noteremo la dashboard.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"edebec\" data-has-transparency=\"false\" style=\"--dominant-color: #edebec;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"436\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1-1024x436.webp\" alt=\"enter in hosted zone\" class=\"wp-image-1345 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1-1024x436.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1-300x128.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1-768x327.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1-1536x654.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1-18x8.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-1.webp 1838w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Ci sono due cerchi:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Qui in caso avessi comprato un dominio da altre parti<\/li>\n\n\n\n<li>Li \u00e8 la zona dove andrai, una volta che hai acquistato o trasferito il dominio sul servizio.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"f7f7f8\" data-has-transparency=\"false\" style=\"--dominant-color: #f7f7f8;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-2-1024x517.webp\" alt=\"add a record route 53\" class=\"wp-image-1346 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-2-1024x517.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-2-300x152.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-2-768x388.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-2-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-2.webp 1360w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Dall&#8217;immagine sopra si vede che ho acquistato il dominio myascari.com, che \u00e8 la nostra hosted zone. <\/p>\n\n\n\n<p>La <a href=\"https:\/\/docs.aws.amazon.com\/Route53\/latest\/DeveloperGuide\/hosted-zones-working-with.html\">Hosted Zone<\/a>  \u00e8 un container di record e i record contengono informazioni relative alle modalit\u00e0 con cui desideri instradare il traffico per un dominio specifico (come esempio.com) e i suoi sottodomini.<\/p>\n\n\n\n<p>Creazione del record<\/p>\n\n\n\n<p>Molto semplice bisogna creare un record per reindirizzare il traffico.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nome record: tuodominio.com<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Type: A <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>value: valore dell&#8217;ip del Elastic IP<\/li>\n<\/ul>\n\n\n\n<p>Una volta creato si aspetta un po di tempo per propagare il dominio.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img data-dominant-color=\"f4f5f6\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5-1024x508.webp\" alt=\"create a record route 53\" class=\"wp-image-1351 not-transparent\" style=\"--dominant-color: #f4f5f6; aspect-ratio:2.0152744323229133;width:611px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5-1024x508.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5-300x149.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5-768x381.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5-1536x762.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-5.webp 1586w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Questo dominio deve essere aggiunto al caddyfile e modificarlo, a questo punto o lo modificate in locale oppure lo modificate dentro la macchina.<\/p>\n\n\n\n<p>Consiglio \u00e8 una buona pratica modifcare da locale e non sulla macchina per buona pratica.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-dominant-color=\"12161c\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"548\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-4.webp\" alt=\"edit caddy file\" class=\"wp-image-1350 not-transparent\" style=\"--dominant-color: #12161c; width:406px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-4.webp 570w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-4-300x288.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-4-12x12.webp 12w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/figure>\n<\/div><\/div><\/div>\n\n\n\n<p>Si inserisce nel Caddyfile il dominio acquistato.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">6. Avvio Stack <\/h2>\n\n\n\n<p>Siamo pronti a far partire lo stack ora.<\/p>\n\n\n\n<p>Ricordati di pullare le modifiche del repository gir hub, spostati sulla cartella del progetto con:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>cd progetto<\/code><\/pre>\n\n\n\n<p>e poi <\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>git pull<\/code><\/pre>\n\n\n\n<p>Dopo aver pullato ed essere in linea si pu\u00f2 far partire lo stack con il comando <\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker compose build --no-cache\ndocker compose up -d<\/code><\/pre>\n\n\n\n<p>N.B. in caso dovessi spegnere e ricreare lo stack usa questi comandi, il primo comando permette di ricostruire senza cache, perch\u00e9 l\u2019immagine vecchia \u00e8 sporca. <\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker system prune -af<br>docker compose build --no-cache<br>docker compose up -d<\/code><\/pre>\n\n\n\n<p>Eseguito i comandi di build e up si pu\u00f2 controllare se \u00e8 tutto partito tramite il comando.<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker ps <\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"060709\" data-has-transparency=\"false\" style=\"--dominant-color: #060709;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9-1024x283.webp\" alt=\"docker ps\" class=\"wp-image-1356 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9-1024x283.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9-300x83.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9-768x212.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9-1536x424.webp 1536w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9-18x5.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-9.webp 1821w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Fatto questo potete controllare sul terminale se va tutto bene e risponde, tramite due comandi:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>curl -I http:\/\/myascari.com\n<ul class=\"wp-block-list\">\n<li>deve rispondere 308 -> redirect a https<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-dominant-color=\"111111\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"415\" height=\"76\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-10.webp\" alt=\"culr http\" class=\"wp-image-1357 not-transparent\" style=\"--dominant-color: #111111; width:699px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-10.webp 415w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-10-300x55.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-10-18x3.webp 18w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/figure>\n<\/div>\n\n\n<ol class=\"wp-block-list\">\n<li>curl -vk https:\/\/myascari.com\/api\/health\n<ul class=\"wp-block-list\">\n<li>deve rispondere  -> {&#8220;ok&#8221;:true}<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-dominant-color=\"130f0f\" data-has-transparency=\"true\" loading=\"lazy\" decoding=\"async\" width=\"749\" height=\"615\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-11.webp\" alt=\"curl https\" class=\"wp-image-1358 has-transparency\" style=\"--dominant-color: #130f0f; width:488px;height:auto\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-11.webp 749w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-11-300x246.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-11-15x12.webp 15w\" sizes=\"auto, (max-width: 749px) 100vw, 749px\" \/><\/figure>\n<\/div>\n\n\n<p>Adesso si pu\u00f2 provare a digitare sul motore di ricerca il nostro dominio e vedere se si apre la nostra web app e creare una nota.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"242335\" data-has-transparency=\"true\" style=\"--dominant-color: #242335;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-12-1024x489.webp\" alt=\"web app cloud \" class=\"wp-image-1359 has-transparency\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-12-1024x489.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-12-300x143.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-12-768x367.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-12-18x9.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-12.webp 1281w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Funziona !!! Il dominio reindirizza correttamente all&#8217;applicazione ora proviamo a scrivere una nota e salvarla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"242638\" data-has-transparency=\"false\" style=\"--dominant-color: #242638;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"392\" src=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-13-1024x392.webp\" alt=\"new note in web app cloud\" class=\"wp-image-1360 not-transparent\" srcset=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-13-1024x392.webp 1024w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-13-300x115.webp 300w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-13-768x294.webp 768w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-13-18x7.webp 18w, https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/immagine-13.webp 1352w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Ecco la nuova nota creata. Siamo arrivati alla fine di questo articolo.<\/p>\n\n\n\n<p>Ricordatevi di fare le attivit\u00e0 di spegnere le risorse, se no girano in continuazione e vi arriva un costo tanto alto, quindi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>spegnere lo stack docker con il comando <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>docker compose down <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>spegnere e o eliminare le risorse AWS\n<ul class=\"wp-block-list\">\n<li>macchina ec2<\/li>\n\n\n\n<li>rilasciare Elastic IP e di conseguenza eliminarlo<\/li>\n\n\n\n<li>eliminare security group <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Eliminare il dominio se volete<\/li>\n<\/ul>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Miglioramenti<\/h2>\n\n\n\n<p>Anche se siamo riusciti alla fine dell&#8217;articolo a portare online la nostra web app, sicuramente ci possono essere delle migliorie che si possono fare  livello di procedura:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creazione delle risorse AWS tramite terraform come:\n<ul class=\"wp-block-list\">\n<li>Ec2<\/li>\n\n\n\n<li>security group<\/li>\n\n\n\n<li>Elastic IP<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Dividere ancora di pi\u00f9 gli ambienti da locale e produzione<\/li>\n\n\n\n<li>Creazione di pipeline tramite git hub action o altri strumenti<\/li>\n\n\n\n<li>Sistema di metrica per vedere il traffico sopra alla macchina e le richieste<\/li>\n<\/ul>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Funziona tutto, siamo arrivati alla fine di questo lungo ma interessante articolo sul portare una web app da locale in produzione.<\/p>\n\n\n\n<p>Un ringraziamento ai lettori che si sono spinti fino a questo punto dell&#8217;articolo, grazie e alla prossima !!!<\/p>\n\n\n\n<ul class=\"wp-block-social-links has-huge-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-a89b3969 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-pinterest  wp-block-social-link\"><a href=\"https:\/\/pin.it\/2Bk2aTtDW\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Pinterest<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-instagram  wp-block-social-link\"><a href=\"https:\/\/www.instagram.com\/tooldech\/\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,4.622c2.403,0,2.688,0.009,3.637,0.052c0.877,0.04,1.354,0.187,1.671,0.31c0.42,0.163,0.72,0.358,1.035,0.673 c0.315,0.315,0.51,0.615,0.673,1.035c0.123,0.317,0.27,0.794,0.31,1.671c0.043,0.949,0.052,1.234,0.052,3.637 s-0.009,2.688-0.052,3.637c-0.04,0.877-0.187,1.354-0.31,1.671c-0.163,0.42-0.358,0.72-0.673,1.035 c-0.315,0.315-0.615,0.51-1.035,0.673c-0.317,0.123-0.794,0.27-1.671,0.31c-0.949,0.043-1.233,0.052-3.637,0.052 s-2.688-0.009-3.637-0.052c-0.877-0.04-1.354-0.187-1.671-0.31c-0.42-0.163-0.72-0.358-1.035-0.673 c-0.315-0.315-0.51-0.615-0.673-1.035c-0.123-0.317-0.27-0.794-0.31-1.671C4.631,14.688,4.622,14.403,4.622,12 s0.009-2.688,0.052-3.637c0.04-0.877,0.187-1.354,0.31-1.671c0.163-0.42,0.358-0.72,0.673-1.035 c0.315-0.315,0.615-0.51,1.035-0.673c0.317-0.123,0.794-0.27,1.671-0.31C9.312,4.631,9.597,4.622,12,4.622 M12,3 C9.556,3,9.249,3.01,8.289,3.054C7.331,3.098,6.677,3.25,6.105,3.472C5.513,3.702,5.011,4.01,4.511,4.511 c-0.5,0.5-0.808,1.002-1.038,1.594C3.25,6.677,3.098,7.331,3.054,8.289C3.01,9.249,3,9.556,3,12c0,2.444,0.01,2.751,0.054,3.711 c0.044,0.958,0.196,1.612,0.418,2.185c0.23,0.592,0.538,1.094,1.038,1.594c0.5,0.5,1.002,0.808,1.594,1.038 c0.572,0.222,1.227,0.375,2.185,0.418C9.249,20.99,9.556,21,12,21s2.751-0.01,3.711-0.054c0.958-0.044,1.612-0.196,2.185-0.418 c0.592-0.23,1.094-0.538,1.594-1.038c0.5-0.5,0.808-1.002,1.038-1.594c0.222-0.572,0.375-1.227,0.418-2.185 C20.99,14.751,21,14.444,21,12s-0.01-2.751-0.054-3.711c-0.044-0.958-0.196-1.612-0.418-2.185c-0.23-0.592-0.538-1.094-1.038-1.594 c-0.5-0.5-1.002-0.808-1.594-1.038c-0.572-0.222-1.227-0.375-2.185-0.418C14.751,3.01,14.444,3,12,3L12,3z M12,7.378 c-2.552,0-4.622,2.069-4.622,4.622S9.448,16.622,12,16.622s4.622-2.069,4.622-4.622S14.552,7.378,12,7.378z M12,15 c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S13.657,15,12,15z M16.804,6.116c-0.596,0-1.08,0.484-1.08,1.08 s0.484,1.08,1.08,1.08c0.596,0,1.08-0.484,1.08-1.08S17.401,6.116,16.804,6.116z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Instagram<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/Matteo29-mar\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-etsy  wp-block-social-link\"><a href=\"https:\/\/www.etsy.com\/shop\/tooldech\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9.16033,4.038c0-.27174.02717-.43478.48913-.43478h6.22283c1.087,0,1.68478.92391,2.11957,2.663l.35326,1.38587h1.05978C19.59511,3.712,19.75815,2,19.75815,2s-2.663.29891-4.23913.29891h-7.962L3.29076,2.163v1.1413L4.731,3.57609c1.00543.19022,1.25.40761,1.33152,1.33152,0,0,.08152,2.71739.08152,7.20109s-.08152,7.17391-.08152,7.17391c0,.81522-.32609,1.11413-1.33152,1.30435l-1.44022.27174V22l4.2663-.13587h7.11957c1.60326,0,5.32609.13587,5.32609.13587.08152-.97826.625-5.40761.70652-5.89674H19.7038L18.644,18.52174c-.84239,1.90217-2.06522,2.038-3.42391,2.038H11.1712c-1.3587,0-2.01087-.54348-2.01087-1.712V12.65217s3.0163,0,3.99457.08152c.76087.05435,1.22283.27174,1.46739,1.33152l.32609,1.413h1.16848l-.08152-3.55978.163-3.587H15.02989l-.38043,1.57609c-.24457,1.03261-.40761,1.22283-1.46739,1.33152-1.38587.13587-4.02174.1087-4.02174.1087Z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Etsy<\/span><\/a><\/li><\/ul>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Buongiorno a tutti e benvenuti in nuovo articolo di tooldech! Oggi vedremo come realizzare una migrazione di un progetto di una web app in locale e portarlo in produzione sul cloud di AWS. In questo tutorial verranno spiegati i passaggi e i procedimenti necessari per spostare una web app locale in modo sicuro in un&#8217;ambiente [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1363,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2,3,4],"tags":[],"class_list":["post-1314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-applicativi-vari","category-cloud","category-devops"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Project web app from local to cloud<\/title>\n<meta name=\"description\" content=\"Project web app from local docker to production enviroment on cloud provider AWS. Article write by tooldech\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tooldech.com\/en\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Project web app from local to cloud\" \/>\n<meta property=\"og:description\" content=\"Project web app from local docker to production enviroment on cloud provider AWS. Article write by tooldech\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tooldech.com\/en\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/\" \/>\n<meta property=\"og:site_name\" content=\"tooldech\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-12T13:19:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-12T13:19:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"tooldech\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tooldech\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/\"},\"author\":{\"name\":\"tooldech\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/#\\\/schema\\\/person\\\/4a554644f96951080896bbb327febe3b\"},\"headline\":\"Project web app from local docker to production enviroment on cloud.\",\"datePublished\":\"2026-03-12T13:19:49+00:00\",\"dateModified\":\"2026-03-12T13:19:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/\"},\"wordCount\":1565,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/#\\\/schema\\\/person\\\/4a554644f96951080896bbb327febe3b\"},\"image\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/webappCloud.webp\",\"articleSection\":[\"Applicativi Vari\",\"Cloud\",\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/\",\"url\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/\",\"name\":\"Project web app from local to cloud\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/webappCloud.webp\",\"datePublished\":\"2026-03-12T13:19:49+00:00\",\"dateModified\":\"2026-03-12T13:19:52+00:00\",\"description\":\"Project web app from local docker to production enviroment on cloud provider AWS. Article write by tooldech\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/webappCloud.webp\",\"contentUrl\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/webappCloud.webp\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tooldech.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Project web app from local docker to production enviroment on cloud.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/#website\",\"url\":\"https:\\\/\\\/tooldech.com\\\/\",\"name\":\"tooldech\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/#\\\/schema\\\/person\\\/4a554644f96951080896bbb327febe3b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tooldech.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/tooldech.com\\\/#\\\/schema\\\/person\\\/4a554644f96951080896bbb327febe3b\",\"name\":\"tooldech\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/logo.png\",\"url\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/logo.png\",\"width\":1024,\"height\":1024,\"caption\":\"tooldech\"},\"logo\":{\"@id\":\"https:\\\/\\\/tooldech.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/logo.png\"},\"sameAs\":[\"https:\\\/\\\/tooldech.com\"],\"url\":\"https:\\\/\\\/tooldech.com\\\/en\\\/author\\\/tooldech\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Project web app from local to cloud","description":"Project web app from local docker to production enviroment on cloud provider AWS. Article write by tooldech","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tooldech.com\/en\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/","og_locale":"en_US","og_type":"article","og_title":"Project web app from local to cloud","og_description":"Project web app from local docker to production enviroment on cloud provider AWS. Article write by tooldech","og_url":"https:\/\/tooldech.com\/en\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/","og_site_name":"tooldech","article_published_time":"2026-03-12T13:19:49+00:00","article_modified_time":"2026-03-12T13:19:52+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp","type":"image\/png"}],"author":"tooldech","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tooldech","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#article","isPartOf":{"@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/"},"author":{"name":"tooldech","@id":"https:\/\/tooldech.com\/#\/schema\/person\/4a554644f96951080896bbb327febe3b"},"headline":"Project web app from local docker to production enviroment on cloud.","datePublished":"2026-03-12T13:19:49+00:00","dateModified":"2026-03-12T13:19:52+00:00","mainEntityOfPage":{"@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/"},"wordCount":1565,"commentCount":0,"publisher":{"@id":"https:\/\/tooldech.com\/#\/schema\/person\/4a554644f96951080896bbb327febe3b"},"image":{"@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp","articleSection":["Applicativi Vari","Cloud","DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/","url":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/","name":"Project web app from local to cloud","isPartOf":{"@id":"https:\/\/tooldech.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#primaryimage"},"image":{"@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp","datePublished":"2026-03-12T13:19:49+00:00","dateModified":"2026-03-12T13:19:52+00:00","description":"Project web app from local docker to production enviroment on cloud provider AWS. Article write by tooldech","breadcrumb":{"@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#primaryimage","url":"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp","contentUrl":"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/tooldech.com\/project-web-app-from-local-docker-to-production-enviroment-on-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tooldech.com\/"},{"@type":"ListItem","position":2,"name":"Project web app from local docker to production enviroment on cloud."}]},{"@type":"WebSite","@id":"https:\/\/tooldech.com\/#website","url":"https:\/\/tooldech.com\/","name":"tooldech","description":"","publisher":{"@id":"https:\/\/tooldech.com\/#\/schema\/person\/4a554644f96951080896bbb327febe3b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tooldech.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/tooldech.com\/#\/schema\/person\/4a554644f96951080896bbb327febe3b","name":"tooldech","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo.png","url":"https:\/\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo.png","contentUrl":"https:\/\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo.png","width":1024,"height":1024,"caption":"tooldech"},"logo":{"@id":"https:\/\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo.png"},"sameAs":["https:\/\/tooldech.com"],"url":"https:\/\/tooldech.com\/en\/author\/tooldech\/"}]}},"jetpack_featured_media_url":"https:\/\/tooldech.com\/wp-content\/uploads\/2026\/03\/webappCloud.webp","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":806,"url":"https:\/\/tooldech.com\/en\/guida-alla-cloud-migration-con-aws-mgn\/","url_meta":{"origin":1314,"position":0},"title":"Guide to Cloud Migration with AWS MGN","author":"tooldech","date":"May 5, 2025","format":false,"excerpt":"Salve a tutti e benvenuti in un nuovo articolo di tooldech! Oggi parleremo di come effettuare una cloud migration. La migrazione di infrastrutture IT dal data center locale al cloud \u00e8 essenziale per le aziende. Esse cercano scalabilit\u00e0, resilienza e ottimizzazione dei costi. In questo articolo esploreremo come effettuare una\u2026","rel":"","context":"In &quot;Cloud&quot;","block_context":{"text":"Cloud","link":"https:\/\/tooldech.com\/en\/category\/cloud\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-26-2025-08_41_01-AM.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-26-2025-08_41_01-AM.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-26-2025-08_41_01-AM.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/05\/ChatGPT-Image-May-26-2025-08_41_01-AM.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":549,"url":"https:\/\/tooldech.com\/en\/creare-uninfrastruttura-aws-con-terraform-per-una-web-app\/","url_meta":{"origin":1314,"position":1},"title":"Creating an AWS Infrastructure with Terraform for a Web App","author":"tooldech","date":"January 16, 2025","format":false,"excerpt":"Buongiorno a tutti cari lettori, iniziamo l'anno a bomba con nuovi articoli e una nuova categoria Cloud, questa categoria sar\u00e0 incentrata sul mondo del cloud computing, nell'articolo di oggi configureremo un'infrastruttura AWS utilizzando Terraform per ospitare una web app su un'istanza EC2. Questa guida include la configurazione della rete, il\u2026","rel":"","context":"In &quot;Cloud&quot;","block_context":{"text":"Cloud","link":"https:\/\/tooldech.com\/en\/category\/cloud\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/01\/copertina.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/01\/copertina.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/01\/copertina.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/01\/copertina.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1009,"url":"https:\/\/tooldech.com\/en\/deployare-su-aws-ecs-con-load-balancer-guida-passo-passo\/","url_meta":{"origin":1314,"position":2},"title":"Deploying on AWS ECS with Load Balancer: Step-by-Step Guide","author":"tooldech","date":"June 29, 2025","format":false,"excerpt":"Buongiorno a tutti e benvenuti in un nuovo articolo di tooldech oggi parleremo di AWS ECS! Sei pronto a portare la tua applicazione Python online in modo scalabile e sicuro? In questo articolo ti guider\u00f2 passo dopo passo nel deployment di una web app Python su AWS ECS (Elastic Container\u2026","rel":"","context":"In &quot;Cloud&quot;","block_context":{"text":"Cloud","link":"https:\/\/tooldech.com\/en\/category\/cloud\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo-1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/06\/logo-1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1137,"url":"https:\/\/tooldech.com\/en\/serverless-su-aws\/","url_meta":{"origin":1314,"position":3},"title":"Serverless on AWS: A Practical Guide with Lambda, API Gateway, and DynamoDB","author":"tooldech","date":"August 21, 2025","format":false,"excerpt":"Buongiorno a tutti e bentornati in nuovo articolo di tooldech, oggi parleremo di Serverless. Cos'\u00e8 il Serverless su AWS Il modello Serverless su AWS permette di eseguire codice senza dover gestire server fisici o virtuali. Utilizzando servizi come AWS Lambda, API Gateway e DynamoDB, puoi costruire applicazioni scalabili e a\u2026","rel":"","context":"In &quot;Cloud&quot;","block_context":{"text":"Cloud","link":"https:\/\/tooldech.com\/en\/category\/cloud\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/08\/immevi.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/08\/immevi.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/08\/immevi.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/08\/immevi.webp?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":775,"url":"https:\/\/tooldech.com\/en\/creare-una-rete-vpc-scalabile-su-aws\/","url_meta":{"origin":1314,"position":4},"title":"Creating a Scalable VPC Network on AWS","author":"tooldech","date":"March 20, 2025","format":false,"excerpt":"Introduzione Buongiorno e benvenuti in un nuovo articolo di toodech, andiamo a parlare di un'argomento molto interessante. Quando si lavora con ambienti AWS complessi, spesso \u00e8 necessario connettere pi\u00f9 Virtual Private Cloud (VPC). Questo permette la comunicazione tra servizi distribuiti su diverse reti. Due delle soluzioni principali offerte da AWS\u2026","rel":"","context":"In &quot;Cloud&quot;","block_context":{"text":"Cloud","link":"https:\/\/tooldech.com\/en\/category\/cloud\/"},"img":{"alt_text":"logoarticolo","src":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/03\/logo.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/03\/logo.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/03\/logo.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2025\/03\/logo.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":244,"url":"https:\/\/tooldech.com\/en\/nextcloud\/","url_meta":{"origin":1314,"position":5},"title":"NextCloud","author":"tooldech","date":"July 31, 2024","format":false,"excerpt":"Benvenuti in un nuovo tutorial di tooldech! Oggi esploreremo un argomento collegato a un nostro precedente articolo su CasaOS: come creare un cloud personale privato con Nextcloud. Cos'\u00e8 Nextcloud? Nextcloud \u00e8 una piattaforma open source di file hosting e collaborazione che consente agli utenti di creare il proprio server cloud\u2026","rel":"","context":"In &quot;Applicativi Vari&quot;","block_context":{"text":"Applicativi Vari","link":"https:\/\/tooldech.com\/en\/category\/applicativi-vari\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/tooldech.com\/wp-content\/uploads\/2024\/07\/nextcloud.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/posts\/1314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/comments?post=1314"}],"version-history":[{"count":10,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/posts\/1314\/revisions"}],"predecessor-version":[{"id":1364,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/posts\/1314\/revisions\/1364"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/media\/1363"}],"wp:attachment":[{"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/media?parent=1314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/categories?post=1314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tooldech.com\/en\/wp-json\/wp\/v2\/tags?post=1314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}