Repositooriumi forki tegemine
See on võtmetähtsusega funktsioon: klooni terve tootmiskeskkond (rakendus, andmebaas, konfiguratsioonifailid) sekunditega. Suvaline suurus. Null lisaruumi kettal. Tee forki nii palju kordi kui soovid.
Moto: klooni tootmine, rikku mitte midagi.
Vaata juhendvideot
Seadista midagi kaotada
Esmalt loo töötavas rakenduses fail, et saaksid tõestada forki isolatsiooni. Ava repositoorium VS Code’is:
rdc vscode connect -m my-server -r my-app
Loo repositooriumi sees markerifail:
time echo "Hello from production" > index.html
Nüüd tee fork.
Fork
time rdc repo fork --parent my-app -m my-server --tag experiment --up
Üks käsk. See kloonib kõik (rakenduse, andmebaasi, konfiguratsioonifailid) sekunditega. Käivita uuesti ja saad veel ühe sõltumatu klooni.
Miks on see nii kiire?
Kujuta ette kausta lingi jagamist. Link on sama olenemata sellest, kas kaust on väike või suur. Kaust on raske, link on kerge.
Forki tegemine toimib samamoodi. 1 GB, 100 GB, 1 TB. Sama aeg, iga kord.
Mis on jagatud, mis on sinu
Mõtle vanemrepositooriumist kui päikesest. Sa ei saa päikest kinni hoida, kuid saad hoida peeglit, mis seda peegeldab. See peegel on sinu fork. Maali peeglile ja sinu joonistused on sinu omad. Päike jääb samaks, olenemata sellest, kui palju peegleid selle poole vaatab.
Sa ei saa päikest kinni hoida, kuid saad seda hoida peeglis.
Mis juhtub, kui vanem muutub hiljem?
Nüüd mõtle jõele. Vesi voolab edasi. Iga hetk on see erinev. Forki tehes teed jõest foto, mis on sellel hetkel külmutatud. Jõgi voolab edasi. Sinu foto ei voola.
Kui vanemrepositoorium muutub hiljem, jääb sinu fork sinna, kus ta oli.
Sa ei saa jõge kinni hoida, kuid saad seda hoida fotol.
Kettakasutus jääb tasaseks
Seepärast sinu ketas ei plahvata. Viis forki 100 GB repositooriumist? Kokku ikka umbes 100 GB. Maksad kettaruumi ainult selle eest, mida igas forkis muudad.
Tee fork viis korda kui soovid. Sinu ketas ei märkagi.
Mida forkid ei päri: saladusi
On üks asi, mida fork tahtlikult ei järgi: saladused. Fork algab ilma API võtmete, andmebaasi paroolide ja Stripe tokeniteta. Seepärast töötab “klooni tootmine, rikku mitte midagi” tegelikkuses. Sinu liivakast ei saa reaalsetelt klientidelt arveid väljastada, sest see ei saa sind imiteerida. Seadistame selle korralikult juhendvideol Saladuste haldamine.
Kontrolli isolatsiooni
Loetlege mõlemad repositooriumid kõrvuti:
time rdc repo list -m my-server
Näed my-app ja my-app:experiment töötamas üheaegselt.
Algses repositooriumis kontrolli, mis töötab:
time docker ps
Pane tähele tööaega. Need on algsed konteinerid. Nüüd lülitu forkile:
rdc vscode connect -m my-server -r my-app:experiment
time docker ps
Samad kujutised, kuid tööaeg on värske. Need käivitusid forki tegemisel.
Tee erinevus veelgi ilmselgemaks. Lisa ainult forkile konteiner:
time docker run --rm -it -d nginx
time docker ps
Nginx töötab, kuid ainult selles forkis.
Proovi midagi hävitavat:
time rm index.html
Siin kadus. Nüüd hüppa tagasi originaalile:
rdc vscode connect -m my-server -r my-app
time docker ps
Nginxi pole. Forki konteinerid jäid forki. Ja index.html on siin ikka alles, puutumata. Originaal ei teadnud, et midagi juhtus. Samad kujutised, eraldi Dockeri deemonid, eraldi failisüsteemid.
Puhastamine
Kui oled lõpetanud, kustuta lihtsalt fork:
time rdc repo delete --name my-app:experiment -m my-server
Originaal jääb täpselt selliseks, nagu ta oli. Tee fork, katse, riku asju, kustuta. Riskita.
Edasi: Saladuste haldamine.