EQVPS

Bir VPS'te Docker Compose yığını nasıl dağıtılır

Docker Compose ile bir VPS'te çok konteynerli bir yığın dağıt: docker-compose.yml yaz, sırları .env'de tut, yeniden başlatmayla açılacak şekilde ayağa kaldır ve yalnızca gerçekten kastettiğin portları yayınla. Bir web uygulaması, veritabanı ve ters proxy ile kopyala-yapıştır örnek.

Docker Compose çok konteynerli bir yığını tek bir dosyada tanımlar ve tek bir komutla çalıştırır. Bu, dağıtım rehberidir; henüz yapmadıysan önce Docker'ı kur. Yapay zekâ ajanına özgü bir yığın (ajan + vektör DB + Redis) için yapay zekâ ajanları için docker-compose yazısına bak.

1. Bir yığın: uygulama + veritabanı + ters 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: {} }

Sırlar .env'de yaşar, asla compose dosyasında değil:

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

Minimal bir Caddyfile alan adını uygulamaya proxy'ler ve HTTPS'i kendisi alır:

app.yourdomain.com {
  reverse_proxy app:8080
}

2. Ayağa kaldır

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

Her hizmette restart: unless-stopped + açılışta etkin Docker = yığın yeniden başlatmadan sonra kendi kendine geri gelir.

3. Günlük komutlar

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

İnsanların yanlış yaptığı kısım: açık portlar

Docker portları iptables üzerinden yayınlar, bu yüzden ports: ["5432:5432"] olan bir konteyner, kapalı sandığın bir UFW güvenlik duvarının arkasında bile internetten erişilebilir. Yalnızca genel giriş noktasını yayınla (80/443'teki proxy); veritabanlarını ve önbellekleri compose ağında ya da 127.0.0.1'e bağlı tut. Web trafiği sunan her şey bir ayrılmış IP planı ister; bir UFW güvenlik duvarıyla eşleştir.

Tek bir IP'nin arkasında bütün bir yığın için birden çok hizmeti kendin barındır yazısına bak. Yaklaşık bir dakikada root, NVMe, KYC yok, kripto ile ödeme.

SSS

Bir VPS'te Docker Compose yığınını nasıl dağıtırım?

Compose eklentisiyle Docker'ı kur, her hizmeti tanımlayan bir docker-compose.yml yaz, sırları git tarafından yok sayılan bir .env'de tut, sonra docker compose up -d. Her hizmete restart: unless-stopped koy ve Docker'ı açılışta etkinleştir ki yığın yeniden başlatmaları atlatsın. Aşağıdaki örnek bir web uygulaması, Postgres ve bir Caddy ters proxy çalıştırır.

Sırlar nereye gider — compose dosyasına mı?

Hayır. Onları bir .env dosyasına koy (chmod 600, git tarafından yok sayılan) ve compose'da ${VAR} olarak referans ver, ya da Docker secrets kullan. Parolaları veya API anahtarlarını asla docker-compose.yml'ye commit'leme — canlı kimlik bilgileri içeren sızmış bir dosya klasik hatadır.

Yığın yeniden başlatmadan sonra geri gelir mi?

Yalnızca ona söylersen. Her hizmete restart: unless-stopped (ya da always) koy ve Docker'ı açılışta etkinleştir (systemctl enable docker). O zaman docker compose up -d yeniden başlatmaları atlatır ve çöken konteynerleri yeniden başlatır.

Hangi portlar açığa çıkar?

Yalnızca ports: ile yayınladıkların. İç hizmetleri (veritabanları, önbellekler) compose ağına ya da 127.0.0.1'e bağla ve yalnızca genel giriş noktasını yayınla — genellikle 80/443'te bir ters proxy. Docker iptables üzerinden yayınlar, bu yüzden yanlışlıkla bir ports: satırı, kapalı sandığın UFW'nin arkasında bile internetten erişilebilir.

Kimlik ya da kart istiyor musunuz?

Hayır. Kaydolmak için bir e-posta, USDC veya USDT ile ödeme — belge yok, kart yok. Yaklaşık bir dakikada root.

Yorumlar

Henüz yorum yok. İlk olun.

Bir yorum bırakın

Yorumlar görünmeden önce denetlenir.