EQVPS
Anza

Jinsi ya kupeleka stack ya Docker Compose kwenye VPS

Peleka stack ya kontena nyingi kwenye VPS kwa Docker Compose: andika docker-compose.yml, weka siri kwenye .env, iwashe kwa kuanza-upya-baada-ya-kuwasha, na chapisha bandari tu unazokusudia. Mfano wa kunakili-bandika wenye programu ya wavuti, hifadhidata na reverse proxy.

Docker Compose huelezea stack ya kontena nyingi kwenye faili moja na kuiendesha kwa amri moja. Huu ni mwongozo wa kupeleka; kwanza sakinisha Docker ikiwa hujafanya. Kwa stack mahususi ya wakala wa AI (wakala + hifadhidata ya vekta + Redis), angalia docker-compose kwa wakala wa AI.

1. Stack: programu + hifadhidata + 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: {} }

Siri huishi kwenye .env, kamwe kwenye faili la compose:

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

Caddyfile ndogo hupitisha kikoa chako kwa programu na hujipatia HTTPS yenyewe:

app.yourdomain.com {
  reverse_proxy app:8080
}

2. Iwashe

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

restart: unless-stopped kwenye kila huduma + Docker iliyowashwa wakati wa kuwasha = stack hurudi yenyewe baada ya kuwasha upya.

3. Amri za kila siku

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

Sehemu watu wanayoikosea: bandari zilizofunuliwa

Docker huchapisha bandari kupitia iptables, hivyo kontena lenye ports: ["5432:5432"] linaweza kufikiwa kutoka intaneti hata nyuma ya ngome ya UFW uliyodhani imefungwa. Chapisha tu kiingilio cha umma (proxy kwenye 80/443); weka hifadhidata na kache kwenye mtandao wa compose au zimefungwa kwa 127.0.0.1. Chochote kinachohudumia trafiki ya wavuti kinahitaji mpango wa IP maalum; unganisha na ngome ya UFW.

Kwa stack nzima nyuma ya IP moja, angalia jipangishie huduma nyingi. Root kwa takribani dakika moja, NVMe, bila KYC, malipo kwa crypto.

Maswali

Nawezaje kupeleka stack ya Docker Compose kwenye VPS?

Sakinisha Docker na programu-jalizi ya Compose, andika docker-compose.yml inayoelezea kila huduma, weka siri kwenye .env inayopuuzwa na git, kisha docker compose up -d. Weka restart: unless-stopped kwenye kila huduma na washa Docker wakati wa kuwasha ili stack idumu kupitia kuwasha upya. Mfano hapa chini huendesha programu ya wavuti, Postgres na reverse proxy ya Caddy.

Siri huenda wapi — kwenye faili la compose?

Hapana. Ziweke kwenye faili la .env (chmod 600, inayopuuzwa na git) na urejelee kama ${VAR} kwenye compose, au tumia Docker secrets. Kamwe usiweke nywila au funguo za API kwenye docker-compose.yml — faili lililovuja lenye vitambulisho hai ndilo kosa la kawaida.

Je, stack itarudi baada ya kuwasha upya?

Tu ukiiambia. Weka restart: unless-stopped (au always) kwenye kila huduma na washa Docker wakati wa kuwasha (systemctl enable docker). Kisha docker compose up -d hudumu kupitia kuwasha upya na kuanzisha upya kontena zilizoanguka.

Ni bandari zipi zinazofunuliwa?

Tu unavyochapisha kwa ports:. Funga huduma za ndani (hifadhidata, kache) kwenye mtandao wa compose au 127.0.0.1 na uchapishe kiingilio cha umma pekee — kwa kawaida reverse proxy kwenye 80/443. Docker huchapisha kupitia iptables, hivyo mstari wa ports: wa bahati mbaya unaweza kufikiwa kutoka intaneti hata nyuma ya UFW.

Mnahitaji kitambulisho au kadi?

Hapana. Barua pepe ya kujisajili, malipo kwa USDC au USDT — hakuna nyaraka, hakuna kadi. Root kwa takribani dakika moja.

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.