Dockerizuokite savo Node.js REST API naudodami Docker konteinerių technologiją, kuri supaprastina diegimo ir valdymo procesą.
Programų diegimas ir paleidimas įvairiose aplinkose gali būti sudėtingas, nes reikia atsižvelgti į daugybę veiksnių pvz., aplinkos kintamųjų nustatymas, norint sukonfigūruoti būtinas priklausomybes ir konkrečias skirtingų programinės įrangos paketų versijas.
Tačiau naudodami „Docker“ konteinerių kūrimo technologiją galite įdiegti programas įvairiose aplinkose su minimaliomis pastangomis su visomis būtinomis „Docker“ vaizdo priklausomybėmis. Tai reiškia, kad jums nereikia jaudintis dėl jokios konfigūracijos. Dėl to programų diegimas ir paleidimas įvairiose aplinkose yra greitas.
Kas yra Dockeris?
Dokeris yra kūrimo platforma, teikianti įrankius ir aplinką programoms pakuoti kaip nešiojamus vaizdus, kurius galima paleisti kaip savarankiškus vykdomuosius komponentus konteineriuose.
Šie konteineriai sudaro programos kodą ir būtinas priklausomybes, kad programa galėtų sėkmingai veikti skirtingose vykdymo aplinkose be jokių problemų.
Prieš pradėdami, įdiekite „Docker“ vietiniame kompiuteryje. Patikrinkite konkrečios platformos būtinas sąlygas ir diegimo instrukcijas oficialioje dokumentacijoje.
Sukurkite Node.js REST API
Pradėti, sukurti Node.js žiniatinklio serverį.
Šios programos kodą galite rasti joje GitHub saugykla.
Tada įdiekite reikiamus šio projekto paketus.
npm įdiegti morgan pg knex
The psl paketas naudojamas ryšiui su PostgreSQL duomenų baze užmegzti. knexKita vertus, suteikia paprastą API sąveikai su PostgreSQL – naudosite ją SQL užklausoms rašyti.
Galiausiai naudosite morganas, tarpinė programinė įranga, registruojanti HTTP užklausas ir atsakymus konsolėje, skirta derinti ir stebėti jūsų programą, veikiančią Docker konteineryje.
Galiausiai atidarykite index.js failą ir po juo pridėkite kodą įdiegia paprastą REST API su trimis maršrutais.
konst išreikšti = reikalauti("išreikšti")
konst morgan = reikalauti("morganas")
konst programa = express ()
konst db = reikalauti(„./db“)
konst PORT = process.env. UOSTAS || 5000app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ pratęstas: tiesa }))app.get('/', (req, res) => res.send('Labas pasauli!' ))
app.get('/naudotojai', async (req, res) => {
konst vartotojai = laukti db.select().from("vartotojai")
res.json (naudotojai)
})app.post('/naudotojai', async (req, res) => {
konst vartotojas = laukti db("vartotojai").Įdėti({ vardas: req.body.name }).returning('*')
res.json (vartotojas)
})
app.listen (PORT, () => konsolė.log(`Serveris prie PORT:${PORT}`))
Sukonfigūruokite duomenų bazės ryšį
REST API sąveikaus su Docker's PostgreSQL egzemplioriumi, tačiau pirmiausia turite sukonfigūruoti duomenų bazės ryšį savo programoje. Projekto aplanko šakniniame kataloge sukurkite a db.js failą ir pridėkite žemiau esantį kodą.
konst Knex = reikalauti("knex")
modulis.exports = knex({
klientas: "postgres",
ryšys: {
šeimininkas: "db",
Vartotojas: „testUser“,
Slaptažodis: "mano slaptažodis123",
duomenų bazė: „testUser“,
},
})
Nustatykite migrate.js ir seed.js failus
Šie du failai leis sukurti lentelę duomenų bazėje ir užpildyti ją bandymo duomenimis per API. Sukurti naują aplanką, scenarijus, į savo projekto šakninį katalogą ir pridėkite du failus: migrate.js ir seed.js.
Viduje migrate.js failą, pridėkite žemiau esantį kodą:
konst db = reikalauti(„../db“);
(async () => {
bandyti {
laukti db.schema.dropTableIfExists("vartotojai")
laukti db.schema.withSchema('vieša').createTable("vartotojai", (lentelė) => {
table.increments()
table.string('vardas')
})
konsolė.log("Sukurta vartotojų lentelė!")
process.exit(0)
} sugauti (err) {
konsolė.log (klaida)
process.exit(1)
}
})()
Šis kodas sukurs a vartotojų lentelė su automatiškai didėjančiu ID stulpeliu ir a vardas stulpelyje duomenų bazėje.
Toliau, į seed.js failą, pridėkite žemiau esantį kodą:
konst db = reikalauti(„../db“);
(async () => {
bandyti {
laukti db("vartotojai").Įdėti({ vardas: 'Test User1' })
laukti db("vartotojai").Įdėti({ vardas: „Test User2“ })
konsolė.log("Pridėti netikri vartotojai!")
process.exit(0)
} sugauti (err) {
konsolė.log (klaida)
process.exit(1)
}
})()
Šis kodas įgyvendina asinchroninę funkciją, kuri į PostgreSQL duomenų bazę įterps du vartotojus.
Galiausiai pridėkite šias komandas prie savo package.json failą.
"scenarijai": {
"pradėti": "mazgas index.js",
"migruoti": "mazgo scenarijai/migrate.js",
"sėkla": "mazgo scenarijai/seed.js"
},
Kadangi nesate sukonfigūruotas klientas, norėdami išbandyti API, turėsite paleisti du failus kaip scenarijus kartu su npm paleisti komandą.
Nustatykite Docker failą
„Dockerfile“ apibrėžia „Docker“ variklio reikalaujamas instrukcijas, kad būtų sukurtas „Docker“ vaizdas. Savo projekto šakniniame kataloge sukurkite naują failą ir pavadinkite jį, Dockerfile. Tada pridėkite šias instrukcijas, kad sukurtumėte „Node.js“ programos „Docker“ vaizdą.
NUO mazgas:16.3.0- Alpių 3.13
DARBO VADOVAS /app
KOPIJUOT paketas*.json ./
BĖGTI npm diegimas
KOPIJUOT. .
ATSAKYTI8000
CMD [ "mazgas", "index.js" ]
Išskaidykime:
- NUO - Ši instrukcija nustato pagrindinį programos vaizdą, kuris yra Node.js Alpine vaizdas, lengva Node.js vaizdo versija, kurią galima rasti Docker registre.
- DARBO VADOVAS - rinkiniai /app katalogą kaip darbo katalogą.
- KOPIJUOT paketas*.json./ - nurodo „Docker“ nukopijuoti visus failus tokiu formatu iš dabartinio katalogo į /app aplanką.
- BĖGTI - vykdo ir sukuria vaizdą.
- KOPIJUOT.. - kopijuoja šaltinio failus į /app aplanką.
- ATSAKYTI - tai nurodo „Docker“ atskleisti konteineryje esantį prievadą išorinei aplinkai, šiuo atveju pagrindiniam kompiuteriui.
- CMD - nurodo komandą, kuri turi būti vykdoma, kai iš vaizdo sukuriamas Docker konteineris.
Sukurkite „Docker Compose“ failą
Kad Node.js programa galėtų sąveikauti su Docker PostgreSQL egzemplioriumi, abi programos turi veikti Docker konteineriuose toje pačioje tinklo aplinkoje.
Dėl šios priežasties turite apibrėžti ir sukurti programos vaizdą ir PostgreSQL egzempliorių Docker Compose – įrankis, leidžiantis kurti ir valdyti kelis „Docker“ konteinerius.
Paprasčiau tariant, naudodami „Docker Compose“, galite apibrėžti paslaugas, kurios sudaro jūsų programą, kaip vieną vienetą, šiuo atveju Node.js REST API ir PostgreSQL duomenų bazę.
Sukurti naują failą, docker-compose.yml, šakniniame kataloge ir pridėkite žemiau esantį kodą:
versija:'3.9'
paslaugos:
serveris:
statyti:.
prievadai:
-'5000:5000'
priklauso nuo:
-db
db:
vaizdas:"postgres"
prievadai:
-'4321:5432'
aplinka:
POSTGRES_PASSWORD:"mano slaptažodis123"
POSTGRES_USER:„testUser“
apimtys:
-duomenys:/var/lib/postgresql/data
apimtys:
duomenys:
Šis kodas sukurs ir paleis du „Docker“ konteinerius. Pirmasis konteineris, serveris, „Docker Compose“ naudoja „Dockerfile“, kad sukurtų šio sudėtinio rodinio vaizdą.
Taip pat nurodoma, kad serverio konteineris priklauso nuo db konteineris. Reiškia, serveris konteineris turi būti paleistas po to db konteinerį, kad galėtumėte su juo prisijungti.
Antrasis konteineris yra PostgreSQL duomenų bazės konteineris. Jums nereikia nurodyti šio konteinerio Docker failo, nes jis bus sukurtas iš PostgreSQL vaizdo Docker vaizdų registre.
Sukurkite „Docker“ vaizdus
Naudokite komandą Docker Compose, kad sukurtumėte vaizdus ir paleistumėte du konteinerius.
docker-compose up -d
Sėkmingai užbaigus procesą, turėtumėte pamatyti panašų atsakymą.
Išbandykite REST API
Vykdykite toliau pateiktą komandą, kad išbandytumėte REST API, veikiančią Docker konteineryje. Ji turėtų sukurti lentelę PostgreSQL duomenų bazėje.
docker exec docker_node-server-1 npm paleisti migrate
Turėtumėte pamatyti panašų atsakymą.
„Docker“ vaizdų bendrinimas
Paskutinis veiksmas yra „Node.js“ programos „Docker“ vaizdo perkėlimas į „Docker Hub“. Tai panašu į jūsų projektų perkėlimą į „GitHub“.
- Eikite į Docker Hub ir prisiregistruokite prie paskyros bei prisijunkite prie vartotojo prietaisų skydelio.
- Toliau spustelėkite Sukurkite saugyklą. Pateikite saugyklos pavadinimą ir nustatykite jos matomumą Viešas arba Privatus ir tada spustelėkite Sukurti.
- Norėdami perkelti programos „Docker“ vaizdą į „Docker Hub“, pirmiausia turite prisijungti prie savo paskyros naudodami terminalą ir pateikti naudotojo vardą bei slaptažodį.
docker prisijungimas
- Tada atnaujinkite „Docker“ vaizdo pavadinimą, kad jis atitiktų šį formatą:
/ . Norėdami atlikti šį pakeitimą, paleiskite toliau pateiktą komandą:
dokerio žyma /
- Galiausiai stumkite savo Docker vaizdą.
dokininko stūmimas /< atpirkimo pavadinimas>
„Docker“ naudojimas plėtrai
Šiame vadove buvo aptarta tik dalis potencialo, kurį gali pasiūlyti „Docker“. Tačiau dabar galite naudoti „Docker“ konteinerių technologiją, kad supakuotumėte bet kurią programą ir visas jos priklausomybes vaizdų, kuriuos galima panaudoti įvairiose kūrimo srityse, taip pat gamybinėse aplinkose, pvz., debesyje, be jokių žagsulys.