Lo sapevi?

A partire dal 2015 abbiamo sviluppato internamente un sistema statefull di protezione dagli attacchi DDoS. Attualmente la protezione di core è erogata grazie a un cluster di server in load balancing. Abbiamo inoltre sviluppato un sistema di pre-filtering a livello di routing. Inoltre, in caso di attacchi superiori alla capacità di rete, le network interessate vengono filtrate grazie alla protezione remota Corero.

Come usare Docker per deploy veloci su VPS (guida pratica e completa)

Estimated reading: 2 minutes 37 views

1. Preparazione VPS (Ubuntu)

Aggiorna il sistema:

				
					apt update && sudo apt upgrade -y
				
			

Installa pacchetti base:

				
					apt install ca-certificates curl gnupg -y
				
			

2. Installazione Docker (metodo ufficiale, consigliato)

Evita docker.io (spesso non aggiornato). Usa il repository ufficiale Docker.

Aggiungi chiave GPG:

				
					install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
				
			

Aggiungi repository:

				
					echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null
				
			

Installa Docker:

				
					apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
				
			

Verifica:

				
					docker --version
docker compose version
				
			

3. Permessi (evitare sudo)

				
					sudo usermod -aG docker $USER
				
			

4. Struttura progetto (standard reale)

				
					/app
 ├── Dockerfile
 ├── docker-compose.yml
 ├── .env
 └── codice
				
			

5. Esempio reale: deploy Node.js su Ubuntu VPS

Dockerfile (ottimizzato)

				
					FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]
				
			

Dockerfile (ottimizzato)

				
					version: "3.9"

services:
  app:
    build: .
    container_name: app_node
    ports:
      - "3000:3000"
    restart: unless-stopped
    env_file:
      - .env
				
			

6. Deploy (1 comando)

				
					docker compose up -d --build
				
			

7. Aggiornamento rapido (deploy continuo)

				
					git pull
docker compose up -d --build
				
			

Tempo medio: 10–60 secondi

8. Debug e controllo

Container attivi:

				
					docker ps
				
			

Log:

				
					docker logs -f app_node
				
			

Entrare nel container:

				
					docker exec -it app_node sh
				
			

9. Persistenza dati (fondamentale su Ubuntu VPS)

Esempio database:

				
					services:
  db:
    image: postgres:15
    volumes:
      - pg_data:/var/lib/postgresql/data

volumes:
  pg_data:
				
			

Senza volumi → perdi tutto al restart.

10. Deploy multi-servizio (pattern reale)

				
					version: "3.9"

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - pg_data:/var/lib/postgresql/data

volumes:
  pg_data:
				
			

11. Reverse proxy (produzione su Ubuntu)

Per usare dominio + HTTPS:

Opzioni solide:

  • Nginx (manuale)
  • Traefik (automatico con Docker)

Esempio rapido (concetto):

  • container app → porta interna
  • proxy → espone 80/443
  • certificati SSL automatici 

12. Ottimizzazioni specifiche Ubuntu

✔ Usa ufw per firewall:

				
					ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
				
			

✔ Controlla risorse:

				
					htop
				
			

✔ Pulizia immagini:

				
					docker system prune -a
				
			

Leave a Comment

Share this Doc

Come usare Docker per deploy veloci su VPS (guida pratica e completa)

Or copy link

CONTENTS