Popoln vodnik za ustvarjanje in upravljanje skladov v Dockerju

Zadnja posodobitev: 01/09/2026

  • Vsak sklad hrani svojo datoteko compose.yaml, spremenljivke, omrežja in nosilce podatkov v mapi.
  • Storitve si delijo omrežje in so locirane z uporabo svojih internih imen.
  • Zvezki ohranijo podatke, tudi če so vsebniki ponovno ustvarjeni ali posodobljeni.
  • Preverjanje zdravja preprečuje zagon aplikacij, preden se njihova baza podatkov odzove.
Kako korak za korakom ustvariti sklad v Dockgeu

Ko je Dockge nameščen, lahko z njegovo nadzorno ploščo nameščate aplikacije, sestavljene iz enega ali več vsebnikov, ne da bi pri tem nenehno tipkali ukaze v terminalu. Vsaka aplikacija se upravlja kot Docker Compose sklad, s svojimi storitvami, spremenljivkami, omrežji in količinami, združenimi v enem samem projektu.

To je še posebej uporabno, kadar aplikacija potrebuje več komponent za skupno delovanje. Storitev, kot je Gitea, lahko na primer zahteva en vsebnik za aplikacijo in drugega za PostgreSQL. Dockge vam omogoča urejanje konfiguracije, zagon sestavljanja, pregled dnevnikov in posodabljanje slik iz enega samega vmesnika.

Ta priročnik predpostavlja, da sta Docker in Dockge že nameščena in delujeta. Če še niste nastavili nadzorne plošče, morate najprej ... Namestitev Dockgeja z Docker Compose in pravilno konfigurirajte mapo »stacks«.

Kaj Dockge smatra za sklad?

Kaj Dockge smatra za sklad?

V Dockgeu je sklad v bistvu Projekt Docker ComposeObičajno je sestavljen iz mape, ki vsebuje datoteko compose.yaml in po želji datoteko .env, dodatne konfiguracije, potrdila ali imeniki, ki se uporabljajo kot nosilci podatkov.

Z privzetimi nastavitvami Dockge shranjuje projekte po tej strukturi:

/opt/stacks/
├── gitea/
│   ├── compose.yaml
│   └── .env
├── stirling-pdf/
│   └── compose.yaml
└── vaultwarden/
    ├── compose.yaml
    └── .env

Vsaka podmapa predstavlja neodvisen sklad. Ta struktura, ki temelji na datotekah, vam omogoča upravljanje istih projektov iz Dockgeja ali z uporabo tradicionalnih ukazov, kot je docker compose up, docker compose down y docker compose logs.

Tega koncepta ne smemo zamenjevati z Docker Swarm stack-i. Dockge uporablja Docker Compose in Strežnika ne spremeni v gručo.Elementi, kot so upravljalna in delovna vozlišča, usmerjevalna mreža, globalne storitve ali ukaz docker stack deploy Pripadajo Swarmu in niso vključeni v ta postopek.

Čeprav se Dockge lahko poveže z različnimi gostitelji z uporabo agentov, vsak sklad še naprej deluje kot projekt Compose na ustreznem gostitelju.

Kaj potrebujete pred ustvarjanjem sklada

Preden namestimo aplikacijo, je dobro zbrati podatke, ki jih bo potrebovala vaša datoteka Compose:

  • La uradna slika vsake storitve in oznake, ki jo želite uporabiti.
  • Gostiteljska vrata, ki bodo na voljo.
  • Mape ali nosilci podatkov, kjer bodo shranjeni podatki.
  • Spremenljivke okolja, ki jih zahteva aplikacija.
  • Poverilnice baze podatkov in druge interne storitve.
  • Dovoljenja, potrebna za dostop do nameščenih imenikov.

Odločiti se morate tudi, katere storitve zahtevajo zunanjo izpostavljenost. Na primer, baza podatkov, ki jo uporablja samo ena druga aplikacija v skladu. Ni vam treba objaviti svojega porta. na gostitelju. Vsebniki lahko komunicirajo neposredno prek notranjega omrežja, ki ga ustvari Compose.

Ekskluzivna vsebina - Kliknite tukaj  Kaj je koda RFC?

Za vajo z aplikacijo za eno storitev, preden ustvarite bolj kompleksne projekte, lahko Namestite Stirling PDF z Dockerjem in ga kasneje upravljajte iz Dockgeja.

Kako ustvariti nov sklad v Dockgeu

Kako ustvariti nov sklad v Dockgeu

Dostopite do plošče Dockge in pritisnite kontrolnik za ustvari nov skladVnesite kratko in prepoznavno ime, po možnosti sestavljeno iz malih črk, številk in vezajev, brez presledkov ali posebnih znakov.

Na primer:

gitea

Dockge bo ustvaril mapo za projekt v imeniku, konfiguriranem za sklade. V glavnem urejevalniku lahko vnesete ali prilepite vsebino compose.yaml.

Naslednji primer ustvari strežnik Gitea, ki ga spremlja baza podatkov PostgreSQL:

services:
  db:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
      interval: 10s
      timeout: 5s
      retries: 5

  gitea:
    image: docker.gitea.com/gitea:1-rootless
    restart: unless-stopped
    environment:
      GITEA__database__DB_TYPE: postgres
      GITEA__database__HOST: db:5432
      GITEA__database__NAME: ${POSTGRES_DB}
      GITEA__database__USER: ${POSTGRES_USER}
      GITEA__database__PASSWD: ${POSTGRES_PASSWORD}
    ports:
      - "${GITEA_HTTP_PORT:-3000}:3000"
      - "${GITEA_SSH_PORT:-2222}:2222"
    volumes:
      - gitea_data:/var/lib/gitea
      - gitea_config:/etc/gitea
    depends_on:
      db:
        condition: service_healthy

volumes:
  db_data:
  gitea_data:
  gitea_config:

Trenutne različice Docker Compose sledijo Specifikacija za pisanjeZato datoteke ni več treba začeti z lastnostmi, kot so version: "3"Compose samodejno uporabi najnovejšo shemo, ki jo prepozna.

Kako konfigurirati spremenljivke okolja

V prejšnjem primeru so uporabljene reference, kot so ${POSTGRES_PASSWORD}Te vrednosti morajo biti definirane v datoteki. .env ki se nahajajo v isti mapi sklada.

Na primer Gitea bi lahko bila vsebina:

POSTGRES_DB=gitea
POSTGRES_USER=gitea
POSTGRES_PASSWORD=CAMBIA_ESTA_CONTRASENA
GITEA_HTTP_PORT=3000
GITEA_SSH_PORT=2222

Zamenjajte primer gesla z dolgim, naključnim geslom. Datoteka .env Omogoča ponovno uporabo programa Compose, vendar Ne šifrira skrivnosti.Omejiti morate njegova dovoljenja, ga izključiti iz repozitorijev Git in se izogibati deljenju skupaj s posnetki zaslona ali javnimi kopijami projekta.

Za zahtevnejša okolja Docker Compose podpira skrivnosti, nameščene kot datoteke znotraj vsebnikov. Tako PostgreSQL kot Gitea omogočata branje gesla iz datoteke, kar preprečuje, da bi se geslo pojavilo neposredno med spremenljivkami storitve.

Dockge ima dostop do vtičnice Docker za upravljanje vsebnikov. Zaradi tega bi morali imeti dostop do nadzorne plošče le zaupanja vredni skrbniki. Izogibajte se tudi lepljenju konfiguracij Compose iz neznanih virov: lahko bi na gostitelju priklopili občutljive mape ali zahtevali povišane pravice.

Kako delujejo imena omrežij in storitev

Kako delujejo omrežja in imena storitev v Dockgeu

Docker Compose samodejno ustvari privzeto omrežje za vsak projektVse storitve, povezane z njim, je mogoče najti z uporabo imena, uporabljenega v compose.yaml.

V primeru se Gitea poveže s PostgreSQL z uporabo:

db:5432

db To je ime storitve, ne fiksni IP-naslov. Docker ohrani to notranjo ločljivost, tudi če je vsebnik ponovno ustvarjen in prejme drug naslov.

Ne smete uporabljati localhost za povezavo dveh posod. V notranjosti posode Gitea, localhost Nanaša se na samo Giteo, ne na vsebnik PostgreSQL.

Ekskluzivna vsebina - Kliknite tukaj  Kako prenesti Excel

Prav tako ni treba objaviti vrat baze podatkov 5432, če se mora nanje povezati le Gitea. Če jih ne razkrijemo v razdelku portsZmanjšate površino napada strežnika.

Kako ohraniti podatke sklada

Vsebnike je mogoče zamenjati. Če shranjujete podatke samo znotraj njihovega notranjega datotečnega sistema, jih lahko pri ponovnem ustvarjanju izgubite. Da bi se temu izognili, primer deklarira tri trajne količine:

  • db_data Ohranja bazo podatkov PostgreSQL.
  • gitea_data Shranjuje Giteine ​​repozitorije in podatke.
  • gitea_config Ohranja nastavitve aplikacije.

Zaustavitev ali ponovna izdelava sklada ne izbriše teh nosilcev samodejno. Vendar pa še vedno obstajajo na istem strežniku, zato Ne nadomeščajo varnostne kopije.

Za shranjevanje datotek na določenih poteh na gostitelju lahko uporabite tudi povezovalne vtičnice. V tem primeru preverite, ali mape obstajajo in ali ima uporabnik, ki izvaja vsebnik, zadostna dovoljenja za njihovo branje ali pisanje vanje.

Zakaj uporabljati preglede stanja in odvisnosti

Nepremičnina depends_on Določa vrstni red, v katerem Compose ustvarja storitve, vendar zagon vsebnika ne pomeni, da je aplikacija, ki gostuje v njem, pripravljena.

Inicializacija baze podatkov PostgreSQL lahko traja nekaj sekund. Če se Gitea poskuša povezati prehitro, lahko prikaže napake, čeprav se oba vsebnika izvajata.

El healthcheck Primer se izvaja periodično pg_isreadyPogoj service_healthy Zaradi tega Compose počaka, da se PostgreSQL uspešno odzove, preden zažene Giteo. Ta kombinacija je še posebej uporabna v skladih, ki vključujejo podatkovne baze, čakalne vrste ali storitve shranjevanja.

Kako zagnati in preveriti sklad

Ko dokončate datoteko Compose in spremenljivke, shranite spremembe in zaženite sklad iz Dockgeja. Nadzorna plošča bo prikazovala prenose slik v realnem času, ustvarjanje nosilca in zagon vsebnika.

Preverite, ali je PostgreSQL videti zdrav in ali Gitea še vedno deluje. Nato odprite:

http://IP_DEL_SERVIDOR:3000

Projekt lahko preverite tudi iz terminala:

cd /opt/stacks/gitea
docker compose config
docker compose ps
docker compose logs --tail=100

docker compose config Prikaže končno konfiguracijo po razrešitvi spremenljivk. To je še posebej uporabno za iskanje sintaktičnih napak, praznih vrednosti ali nepričakovanih zamenjav pred zagonom storitev.

Ko morate posodobiti slike, lahko posodabljanje Dockerjevega vsebnika z uporabo DockgejaPred večjo nadgradnjo varnostno kopirajte nosilce podatkov in preglejte spremembe različic.

Kako uvoziti obstoječi sklad v Dockge

Dockge lahko upravlja tudi predhodno ustvarjene projekte Compose iz terminala. Priporočeni postopek je:

  1. Zaustavite obstoječi projekt, da se izognete podvajanju.
  2. V imeniku stacks ustvarite podmapo.
  3. Premaknite datoteko tja z imenom compose.yaml.
  4. Kopirajte tudi datoteko .env in pomožne datoteke.
  5. Uporabite možnost Mapa Skeniraj sklade iz Dockgea.
  6. Pred ponovnim zagonom projekta preglejte konfiguracijo.
Ekskluzivna vsebina - Kliknite tukaj  Kako spremeniti in urediti datoteko PDF

Na primer:

/opt/stacks/mi-aplicacion/compose.yaml

Če ste konfigurirali drugo mapo za /opt/stacksNe pozabite, da mora biti pot, nastavljena znotraj vsebnika Dockge, identična absolutni poti gostiteljaRazlične poti lahko povzročijo, da relativne povezave priklopov kažejo na napačne lokacije.

Pogoste napake pri ustvarjanju sklada v Dockgeju

Pogoste napake pri ustvarjanju sklada v Dockgeju

Datoteka YAML ni veljavna

YAML se zanaša na zamike in ne podpira tabulatorjev namesto presledkov. Bodite še posebej pozorni na razdelke. services, volumes y environmentTeči docker compose config da bi našli problematično vrstico.

Prikaže se sporočilo »Vrata so že dodeljena«.

Drug vsebnik ali storitev uporablja ista gostiteljska vrata. Spremenite le vrednost levo od preslikave. Na primer, zamenjajte 3000:3000 od 3001:3000.

Spremenljivke so videti prazne.

Preverite, ali je datoteka pravilno poimenovana .envda je znotraj mape sklada in da se imena ujemajo z imeni, uporabljenimi v compose.yamlPreverite rezultat docker compose config brez deljenja svojega izhoda, če vsebuje skrivnosti.

Aplikacija ne more najti baze podatkov

Kot ime gostitelja uporabite ime storitve. V primeru bi ga bilo treba uporabiti db, Ne localhost niti ročno dodeljenega naslova IP. Preverite tudi, ali si obe storitvi delita omrežje.

Aplikacija se zažene pred PostgreSQL

depends_on Brez preverjanja stanja nadzoruje le vrstni red ustvarjanja. Dodaj healthcheck v bazo podatkov in uporabi pogoj service_healthy.

Pri pripenjanju mape se prikaže sporočilo »Dovoljenje zavrnjeno«.

Preverite, ali pot obstaja na gostitelju, ali je absolutna, kjer je to primerno, in ali njena dovoljenja omogočajo dostop notranjemu uporabniku vsebnika. Ne dodeljujte globalnih dovoljenj za pisanje kot trajne rešitve.

Sklad se ne prikaže v Dockgeu

Preverite, ali se datoteka nahaja neposredno v strukturi, kot je /opt/stacks/nombre/compose.yamlNato teci Mapa Skeniraj skladeProjekti, shranjeni zunaj konfigurirane mape, se ne bodo prikazali samodejno.

Posoda nenehno prehaja v stanje ponovnega zagona

Odprite dnevnike iz Dockgeja ali zaženite docker compose logsNajpogostejši vzroki so napačne poverilnice, manjkajoče zahtevane spremenljivke, nezadostna dovoljenja ali odvisnost, ki še ni na voljo.

Ustvarjanje Dockerjevega sklada vključuje definiranje aplikacije z uporabo Docker Compose, shranjevanje njenih spremenljivk in trajnih podatkov ter njeno uvajanje iz vizualnega vmesnika. Ključno je, da se za notranjo komunikacijo uporabijo imena storitev, izpostavijo samo potrebna vrata in preveri razpoložljivost odvisnosti z uporabo preverjanj stanja.

Dockge poenostavlja administracijo, vendar projekti ostajajo standardne datoteke Compose. To vam omogoča, da ohranite nadzor nad konfiguracijo, po potrebi uporabite ukazno vrstico in prenesete sklade na drug strežnik, ne da bi se zanašali na lastniško bazo podatkov.