−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

Cum faci deploy unui stack Docker Compose pe un VPS

Pornește pe un VPS un stack cu mai multe containere, cu Docker Compose: scrii docker-compose.yml, ții secretele în .env, îl pornești cu repornire după boot și publici doar porturile pe care chiar vrei să le publici. Exemplu gata de copiat cu o aplicație web, o bază de date și un reverse proxy.

Docker Compose descrie un stack cu mai multe containere într-un singur fișier și îl rulează cu o singură comandă. Acesta e ghidul de deploy; întâi instalează Docker, dacă n-ai făcut-o. Pentru un stack anume pentru agenți AI (agent + bază vectorială + Redis), vezi docker-compose pentru agenți AI.

1. Un stack: aplicație + bază de date + reverse proxy

# /opt/stack/docker-compose.yml
services:
  app:
    image: your/app:latest
    restart: unless-stopped
    env_file: [.env]
    depends_on: [db]
    # no ports: — reached only through the proxy below

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes: ["pg:/var/lib/postgresql/data"]   # internal only

  caddy:                                        # HTTPS automatically
    image: caddy:2
    restart: unless-stopped
    ports: ["80:80", "443:443"]                 # the only public entrypoint
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes: { pg: {}, caddy_data: {} }

Secretele stau în .env, niciodată în fișierul compose:

# /opt/stack/.env  (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string

Un Caddyfile minimal redirecționează domeniul spre aplicație și obține singur HTTPS:

app.yourdomain.com {
  reverse_proxy app:8080
}

2. Pornește-l

cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app

restart: unless-stopped pe fiecare serviciu + Docker activat la boot = stackul revine singur după o repornire.

3. Comenzi de zi cu zi

docker compose pull && docker compose up -d   # update images
docker compose down                            # stop the stack
docker compose restart app                     # restart one service

Partea pe care o greșesc oamenii: porturile expuse

Docker publică porturile prin iptables, așa că un container cu ports: ["5432:5432"] e accesibil de pe internet chiar și în spatele unui firewall UFW pe care îl credeai închis. Publică doar punctul de intrare public (proxy-ul pe 80/443); ține bazele de date și cache-urile pe rețeaua compose sau legate de 127.0.0.1. Orice servește trafic web are nevoie de un plan cu IP dedicat; combină-l cu un firewall UFW.

Pentru un stack întreg în spatele unui singur IP, vezi găzduirea mai multor servicii. Root în aproximativ un minut, NVMe, fără KYC, plată cripto.

Cum eliberezi spațiu pe disc pe un VPS fără să strici nimic →

Întrebări frecvente

Cum fac deploy unui stack Docker Compose pe un VPS?

Instalezi Docker cu pluginul Compose, scrii un docker-compose.yml care descrie fiecare serviciu, ții secretele într-un .env ignorat de git, apoi rulezi docker compose up -d. Setezi restart: unless-stopped pe fiecare serviciu și activezi Docker la boot, ca stackul să supraviețuiască repornirilor. Exemplul de mai jos rulează o aplicație web, Postgres și un reverse proxy Caddy.

Unde pun secretele — în fișierul compose?

Nu. Pune-le într-un fișier .env (chmod 600, ignorat de git) și folosește-le ca ${VAR} în compose sau folosește Docker secrets. Nu pune niciodată parole sau chei API în docker-compose.yml într-un commit — un fișier scurs cu date de acces valide e greșeala clasică.

Va reveni stackul după o repornire?

Doar dacă îi spui. Setează restart: unless-stopped (sau always) pe fiecare serviciu și activează Docker la boot (systemctl enable docker). Atunci docker compose up -d supraviețuiește repornirilor și repornește containerele căzute.

Ce porturi sunt expuse?

Doar cele pe care le publici cu ports:. Leagă serviciile interne (baze de date, cache-uri) de rețeaua compose sau de 127.0.0.1 și publică doar punctul de intrare public — de obicei un reverse proxy pe 80/443. Docker publică prin iptables, așa că o linie ports: pusă din greșeală e accesibilă de pe internet chiar și cu UFW.

Cereți act de identitate sau card?

Nu. E-mail la înregistrare, plată în USDC sau USDT — fără documente, fără card. Root în aproximativ un minut.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.