Migratsioonijuhend
Migreerige olemasolev projekt, failid, Dockeri teenused, andmebaasid, traditsiooniliselt serverilt või kohalikust arenduskeskkonnast krüpteeritud Rediacc hoidlasse.
Eeltingimused
rdcCLI installitud (Installatsioon)- Masin lisatud ja ettevalmistatud (Seadistus)
- Serveri kettaruum on piisav teie projekti jaoks (kontrollige
rdc machine statusabil)
Samm 1: Looge hoidla
Looge krüpteeritud hoidla, mis mahutab teie projekti. Eraldage lisaruumi Dockeri piltide ja konteinerite andmete jaoks.
rdc repo create --name my-project -m server-1 --size 20G
Vihje: Suurust saate hiljem muuta
rdc repo resizeabil vajadusel, kuid hoidla peab enne olema lahti ühendatud. Lihtsam on alustada piisava ruumiga.
Samm 2: Laadige oma failid üles
Kasutage rdc repo sync upload, et edastada projekti failid hoidlasse.
# Eelvaade edastatavast (muudatusi ei tehta)
rdc repo sync upload -m server-1 -r my-project --local ./my-project --dry-run
# Failide üleslaadimine
rdc repo sync upload -m server-1 -r my-project --local ./my-project
Hoidla peab olema ühendatud enne üleslaadimist. Kui seda pole veel tehtud:
rdc repo mount --name my-project -m server-1
Järgnevate sünkroonimiste jaoks, kus soovite kaugserveri täpselt vastata oma kohalikule kaustale:
rdc repo sync upload -m server-1 -r my-project --local ./my-project --mirror
Lipp
--mirrorkustutab kaugserveris failid, mis ei ole kohalikult olemas. Kasutage esmalt--dry-runkontrollimiseks.
Samm 3: Parandage failide omandiõigus
Üleslaaditud failid saabuvad teie kohaliku kasutaja UID-ga (nt 1000). Rediacc kasutab üldkasutajat (UID 7111), et VS Code, terminaliseanssid ja tööriistad omaksid järjepidevat juurdepääsu. Käivitage omandiõiguse käsk teisendamiseks:
rdc repo ownership --name my-project -m server-1
Dockeri-teadlik välistamine
Kui Dockeri konteinerid töötavad (või on töötanud), tuvastab omandiõiguse käsk automaatselt nende kirjutatavad andmekaustad ja jätab need vahele. See takistab konteinerite katkemist, mis haldavad oma faile eri UID-dega (nt MariaDB kasutab UID 999, Nextcloud kasutab UID 33).
Käsk teatab, mida see teeb:
Excluding Docker volume: database/data
Excluding Docker volume: redis/data
Ownership set to UID 7111 (245 changed, 4 skipped, 0 errors)
Millal käivitada
- Pärast failide üleslaadimist, et teisendada kohalik UID 7111-ks
- Pärast konteinerite käivitamist, kui soovite Dockeri mahukaustad automaatselt välistada. Kui konteinereid pole veel käivitatud, pole mahte, mida välistada, ja kõik kaustad saavad chown’itud (mis on hästi, konteinerid loovad oma andmed esimesel käivitusel uuesti)
Sunnirežiim
Dockeri mahu tuvastamise vahele jätmiseks ja kõige, sealhulgas konteinerite andmekataloogide, chown’imiseks:
rdc repo ownership --name my-project -m server-1
Hoiatus: See võib katkestada töötavaid konteinereid. Peatage need esmalt vajaduse korral
rdc repo downabil.
Kohandatud UID
Vaikimisi 7111-st erineva UID seadistamiseks:
rdc repo ownership --name my-project -m server-1 --uid 1000
Samm 4: Seadistage oma Rediaccfile
Looge Rediaccfile projekti juures. See Bash-skript määratleb, kuidas teie teenused käivitatakse ja peatatakse.
#!/bin/bash
up() {
renet compose -- up -d
}
down() {
renet compose -- down
}
Kaks elutsüklifunktsiooni:
| Funktsioon | Eesmärk | Tõrke käitumine |
|---|---|---|
up() | Käivita teenused | Juure tõrge on kriitiline; alamkausta tõrked logitakse ja jätkuvad |
down() | Peata teenused | Parima pingutusega: proovib alati kõiki |
Oluline: Kasutage oma Rediaccfile’is alati
renet compose --asemeldocker compose.renet composeümbris jõustab hosti võrguse, CRIU kontrollpunkti/taastamise võimalused, IP eraldamise ja renet-poxy nõutud teenuse tuvastamise.docker composeotsene kasutamine möödub kõigist neist ja lükatakse valideerimise ajal tagasi.Ärge kasutage ka
sudo docker,sudolähtestab keskkonna muutujad sealhulgasDOCKER_HOST, mis põhjustab konteinerite loomist süsteemi Dockeri deemonis hoidla eraldatud deemoni asemel. Rediaccfile funktsioonid töötavad juba piisavate privileegidega.
Vt täpseid üksikasju Rediaccfile’ide, mitme teenuse paigutuste ja täitmise järjekorra kohta Teenustest.
Samm 5: Konfigureerige teenuse võrk
Rediacc käitab eraldatud Dockeri deemoni hoidla kohta. Teenused kasutavad network_mode: host ja seovad unikaalsete loopback-IP-dega, et nad saaksid kasutada standardporte ilma hoidlate vaheliste konfliktideta.
docker-compose.yml kohandamine
Enne (traditsiooniline):
services:
postgres:
image: postgres:16
ports:
- "5432:5432"
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: secret
redis:
image: redis:7-alpine
ports:
- "6379:6379"
app:
image: my-app:latest
ports:
- "8080:8080"
environment:
DATABASE_URL: postgresql://postgres:secret@postgres:5432/mydb
REDIS_URL: redis://redis:6379
Pärast (Rediacc):
services:
postgres:
image: postgres:16
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: secret
redis:
image: redis:7-alpine
app:
image: my-app:latest
environment:
DATABASE_URL: postgresql://postgres:secret@postgres:5432/mydb
REDIS_URL: redis://redis:6379
LISTEN_ADDR: 0.0.0.0:8080
Peamised muutused:
- Eemaldage
ports:vastendused —renet composekasutab hosti võrgustamist ja eemaldab portide vastendused automaatselt - Eemaldage
network_mode: host—renet composelisab selle teie eest - Taaskäivituspoliitikat on ohutu hoida — renet eemaldab need automaatselt CRIU ühilduvuse jaoks ja marsruuteri valvekoer taastab peatunud konteinerid automaatselt
- Kasutage teenuse nimesid teenusetevaheliste ühenduste jaoks (nt
postgres,redis) — renet sisestab iga teenuse nime lahendatava hostinimena. Ärge manustage ühendusstringe, mis salvestatakse andmebaasidesse või konfiguratsioonifailidesse, tooreid IP-sid; kasutage selle asemel teenuse nime, et hargnemise eraldus püsiks - Sidumine on automaatne — tuum kirjutab
bind()ümber õigele loopback-IP-le. Teenused saavad kasutada0.0.0.0võilocalhost
{SERVICE}_IP muutujad on endiselt saadaval, kui vajate neid, kuid sõnaselge sidumine ei ole enam vajalik — seda käsitletakse automaatselt. Nimetamise konventsioon: suurtähtedega, sidekriipsud asendatud alljoontega, järelliide _IP. Näiteks listmonk-app saab LISTMONK_APP_IP.
Vt IP eraldamise ja .rediacc.json üksikasju Teenuse võrgust.
Samm 6: Käivitage teenused
Ühendage hoidla (kui pole veel ühendatud) ja käivitage kõik teenused:
rdc repo up --name my-project -m server-1
See teeb järgmist:
- Ühendab krüpteeritud hoidla
- Käivitab eraldatud Dockeri deemoni
- Genereerib automaatselt
.rediacc.jsonkoos teenuse IP eraldamistega - Käivitab
up()kõikidest Rediaccfile’idest
Kontrollige, et teie konteinerid töötavad:
rdc machine containers --name server-1
Samm 7: Lubage autostart (valikuline)
Vaikimisi tuleb hoidlad pärast serveri taaskäivitamist käsitsi ühendada ja käivitada. Lubage autostart, et teie teenused käivituksid automaatselt:
rdc repo autostart enable --name my-project -m server-1
Teilt küsitakse hoidla paroolifraasi.
Turvamärkus: Autostart salvestab serverile LUKS-võtmefaili. Igaüks, kellel on juurjuurdepääs, saab hoidla ühendada ilma paroolifraasita. Vt üksikasju Autostardist.
Levinud migratsioonistsenaariumid
WordPress / PHP koos andmebaasiga
my-wordpress/
├── Rediaccfile
├── docker-compose.yml
├── app/ # WordPress failid (UID 33 töötades)
├── database/data/ # MariaDB andmed (UID 999 töötades)
└── wp-content/uploads/ # Kasutaja üleslaadimised
- Laadige üles oma projekti failid
- Käivitage esmalt teenused (
rdc repo up), et konteinerid loovad oma andmekaustad - Käivitage omandiõiguse parandus, MariaDB ja rakenduste andmekaustad jäetakse automaatselt vahele
Node.js / Python koos Redisega
my-api/
├── Rediaccfile
├── docker-compose.yml
├── src/ # Rakenduse lähtetekst
├── node_modules/ # Sõltuvused
└── redis-data/ # Redise püsimine (UID 999 töötades)
- Laadige projekt üles (kaaluge
node_modulesvälistamist ja tõmbamistup()funktsioonis) - Käivitage omandiõiguse parandus pärast konteinerite käivitamist
Kohandatud Dockeri projekt
Mis tahes Dockeri teenustega projekti jaoks:
- Laadige projekti failid üles
- Kohandage
docker-compose.yml(vt Samm 5) - Looge
Rediaccfileelutsüklifunktsioonidega - Käivitage omandiõiguse parandus
- Käivitage teenused
Tõrkeotsing
Juurdepääs keelatud pärast üleslaadimist
Failidel on endiselt teie kohalik UID. Käivitage omandiõiguse käsk:
rdc repo ownership --name my-project -m server-1
Konteiner ei käivitu
Kontrollige, et teenused töötavad ja vaadake nende logid üle:
# Kontrollige eraldatud IP-sid
rdc term connect -m server-1 -r my-project -c "cat .rediacc.json"
# Kontrollige konteineri logisid
rdc term connect -m server-1 -r my-project -c "docker logs <container-name>"
Pordi konflikt hoidlate vahel
Iga hoidla saab unikaalsed loopback-IP-d ja tuum kirjutab automaatselt bind() kutsed õigele IP-le ümber. Portide konfliktid hoidlate vahel ei tohiks esineda. Kui näete ootamatut käitumist, kontrollige, et teenused on käivitatud renet compose kaudu (mitte docker compose). Teistele teenustele ühendamiseks kasutage teenuse nime (nt postgres), mitte toorkeid IP-sid — teenuse nimed lahenduvad õigesti igas hargnemises.
Omandiõiguse parandus katkestab konteinerid
Kui käivitasite rdc repo ownership ja konteiner lakkas töötamast, chown’iti konteineri andmefailid. Peatage konteiner, kustutage selle andmekaust ja taaskäivitage — konteiner loob selle uuesti:
rdc repo down --name my-project -m server-1
# Kustutage konteineri andmekaust (nt database/data)
rdc repo up --name my-project -m server-1