Dockerizējiet savu Node.js REST API, izmantojot Docker konteinerizācijas tehnoloģiju, kas vienkāršo izvietošanas un pārvaldības procesu.
Lietojumprogrammu izvietošanas un palaišanas process dažādās vidēs var būt apgrūtinošs, jo ir jāņem vērā vairāki faktori. piemēram, vides mainīgo iestatīšana, lai konfigurētu nepieciešamās atkarības un dažādas programmatūras pakotnes konkrētas versijas.
Tomēr, izmantojot Docker konteinerizācijas tehnoloģiju, varat izvietot lietojumprogrammas dažādās vidēs ar minimālu piepūli ar visām nepieciešamajām atkarībām no Docker attēla. Tas nozīmē, ka jums nav jāuztraucas par konfigurācijas izveidi. Tas padara lietojumprogrammu izvietošanas un palaišanas procesu dažādās vidēs vieglu.
Kas ir Docker?
Docker ir izstrādes platforma, kas nodrošina rīkus un vidi, lai lietojumprogrammas pakotētu kā pārnēsājamus attēlus, kurus var palaist kā autonomus izpildāmos komponentus konteineros.
Šie konteineri veido lietojumprogrammas kodu un nepieciešamās atkarības, lai lietojumprogramma bez problēmām varētu veiksmīgi darboties dažādās izpildlaika vidēs.
Pirms darba sākšanas instalējiet Docker savā vietējā datorā. Oficiālajā dokumentācijā pārbaudiet platformai specifiskos priekšnosacījumus un instalēšanas instrukcijas.
Izveidojiet Node.js REST API
Lai sāktu, izveidot Node.js tīmekļa serveri.
Šīs lietojumprogrammas kodu varat atrast tajā GitHub repozitorijs.
Pēc tam instalējiet šim projektam nepieciešamās pakotnes.
npm instalēt morgan pg knex
The lpp pakotne tiek izmantota, lai izveidotu savienojumu ar PostgreSQL datu bāzi. knex, no otras puses, nodrošina vienkāršu API mijiedarbībai ar PostgreSQL — jūs to izmantosit, lai rakstītu SQL vaicājumus.
Visbeidzot, jūs izmantosit morgan, starpprogrammatūra, kas konsolē reģistrē HTTP pieprasījumus un atbildes, lai atkļūdotu un pārraudzītu jūsu lietojumprogrammu, kas darbojas Docker konteinerā.
Visbeidzot atveriet index.js failu un pievienojiet kodu zem tā ievieš vienkāršu REST API ar trim maršrutiem.
konst izteikt = pieprasīt("izteikt")
konst morgan = pieprasīt("morgan")
konst lietotne = express ()
konst db = pieprasīt('./db')
konst PORT = process.env. OST || 5000app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ pagarināts: taisnība }))app.get('/', (req, res) => res.send('Sveika pasaule!' ))
app.get('/lietotāji', asinhrons (req, res) => {
konst lietotāji = gaidīt db.select().from('lietotāji')
res.json (lietotāji)
})app.post('/lietotāji', asinhrons (req, res) => {
konst lietotājs = gaidīt db('lietotāji').insert({ nosaukums: req.body.name }).returning('*')
res.json (lietotājs)
})
app.listen (PORT, () => konsole.log(`Serveris pie PORT:${PORT}`))
Konfigurējiet datu bāzes savienojumu
REST API mijiedarbosies ar Docker's PostgreSQL instanci, tomēr vispirms lietojumprogrammā ir jākonfigurē datu bāzes savienojums. Projekta mapes saknes direktorijā izveidojiet a db.js failu un pievienojiet tālāk norādīto kodu.
konst knex = pieprasīt('knex')
modulis.exports = knex({
klients: 'postgres',
savienojums: {
saimniekdators: 'db',
lietotājs: 'testUser',
parole: "mana parole123",
datu bāze: 'testUser',
},
})
Iestatiet failus migrate.js un seed.js
Šie divi faili ļaus izveidot tabulu datu bāzē un aizpildīt to ar testa datiem, izmantojot API. Izveidojiet jaunu mapi, skripti, sava projekta saknes direktorijā un pievienojiet divus failus: migrate.js un seed.js.
Iekš migrate.js failu, pievienojiet tālāk norādīto kodu:
konst db = pieprasīt("../db");
(asinhrons () => {
mēģināt {
gaidīt db.schema.dropTableIfExists('lietotāji')
gaidīt db.schema.withSchema("publisks").createTable('lietotāji', (tabula) => {
table.increments()
table.string('vārds')
})
konsole.log('Izveidota lietotāju tabula!')
process.exit(0)
} noķert (kļūda) {
konsole.log (kļūda)
process.exit(1)
}
})()
Šis kods izveidos a lietotājiem tabula ar automātiski pieaugošu id kolonnu un a nosaukums kolonnu datubāzē.
Tālāk, sadaļā seed.js failu, pievienojiet tālāk norādīto kodu:
konst db = pieprasīt("../db");
(asinhrons () => {
mēģināt {
gaidīt db('lietotāji').insert({ nosaukums: "Pārbaudīt lietotāju1" })
gaidīt db('lietotāji').insert({ nosaukums: "Pārbaudīt lietotāju2" })
konsole.log("Pievienoti fiktīvie lietotāji!")
process.exit(0)
} noķert (kļūda) {
konsole.log (kļūda)
process.exit(1)
}
})()
Šis kods ievieš asinhronu funkciju, kas ievietos divus lietotājus PostgreSQL datu bāzē.
Visbeidzot pievienojiet šīs komandas savam pack.json failu.
"skripti": {
"sākt": "mezgls index.js",
"migrēt": "node scripts/migrate.js",
"sēkla": "node scripts/seed.js"
},
Tā kā jums nav konfigurēts klients, lai pārbaudītu API, abi faili būs jāpalaiž kā skripti kopā ar npm palaist komandu.
Iestatiet Dockerfile
Dockerfile nosaka norādījumus, kas nepieciešami Docker programmai, lai izveidotu Docker attēlu. Projekta saknes direktorijā izveidojiet jaunu failu un nosauciet to, Dockerfile. Pēc tam pievienojiet tālāk sniegtos norādījumus, lai izveidotu Docker attēlu lietojumprogrammai Node.js.
NO mezgls:16.3.0-Alpu 3.13
DARBA DIREKTĪVĀ /app
KOPĒT pakotne*.json ./
RUN npm instalēšana
KOPĒT. .
ATKLĀJOT8000
CMD [ "mezgls", "index.js" ]
Sadalīsim to:
- NO - Šajā instrukcijā tiek iestatīts lietojumprogrammas bāzes attēls, kas ir Node.js Alpine attēls — Node.js attēla vieglā versija, kas atrodama Docker reģistrā.
- DARBA DIREKTĪVĀ - komplekti /app direktoriju kā darba direktoriju.
- KOPĒT pakotne*.json./ - uzdod Docker kopēt visus failus ar šo faila nosaukuma formātu no pašreizējā direktorija uz /app mapi.
- RUN - izpilda un veido attēlu.
- KOPĒT.. - kopē avota failus mapē /app mapi.
- ATKLĀJOT - tas uzdod Docker konteinerā esošo portu pakļaut ārējai videi, šajā gadījumā resursdatoram.
- CMD - norāda komandu, kas jāizpilda, kad no attēla tiek izveidots Docker konteiners.
Izveidojiet Docker Compose failu
Lai lietojumprogramma Node.js varētu mijiedarboties ar Docker PostgreSQL instanci, abām lietojumprogrammām ir jādarbojas Docker konteineros vienā tīkla vidē.
Šī iemesla dēļ jums ir jādefinē un jāveido gan lietojumprogrammas attēls, gan PostgreSQL instance, izmantojot Docker Compose — rīks, kas ļauj izveidot un pārvaldīt vairākus Docker konteinerus.
Vienkārši sakot, izmantojot Docker Compose, varat definēt pakalpojumus, kas veido jūsu lietojumprogrammu, kā vienu vienību, šajā gadījumā — Node.js REST API un PostgreSQL datu bāzi.
Izveidojiet jaunu failu, docker-compose.yml, saknes direktorijā un pievienojiet tālāk norādīto kodu:
versija:'3.9'
pakalpojumi:
serveris:
būvēt:.
porti:
-'5000:5000'
atkarīgs no:
-db
db:
attēls:'postgres'
porti:
-'4321:5432'
vide:
POSTGRES_PASSWORD:"mana parole123"
POSTGRES_USER:'testUser'
apjomi:
-dati:/var/lib/postgresql/data
apjomi:
dati:
Šis kods izveidos un palaidīs divus Docker konteinerus. Pirmais konteiners, serveris, Docker Compose izmanto Dockerfile, lai izveidotu šī konteinera attēlu.
Tas arī norāda, ka servera konteiners ir atkarīgs no db konteiners. Nozīmē, serveris konteiners jāiedarbina pēc db konteineru, lai izveidotu savienojumu ar to.
Otrais konteiners ir PostgreSQL datu bāzes konteiners. Šim konteineram nav jānorāda Docker fails, jo tas tiks izveidots no PostgreSQL attēla Docker attēlu reģistrā.
Izveidojiet Docker attēlus
Izmantojiet komandu Docker Compose, lai izveidotu attēlus un palaistu abus konteinerus.
docker-compose up -d
Pēc procesa veiksmīgas pabeigšanas jums vajadzētu redzēt līdzīgu atbildi.
Pārbaudiet REST API
Palaidiet tālāk norādīto komandu, lai pārbaudītu REST API, kas darbojas Docker konteinerā. Tam vajadzētu izveidot tabulu PostgreSQL datu bāzē.
docker exec docker_node-server-1 npm palaist migrēt
Jums vajadzētu redzēt līdzīgu atbildi.
Docker attēlu kopīgošana
Pēdējais solis ir jūsu Node.js lietojumprogrammas Docker attēla nosūtīšana uz Docker Hub. Tas ir līdzīgs projektu virzīšanai uz GitHub.
- Dodieties uz Docker Hub un reģistrējieties kontam un piesakieties lietotāja informācijas panelī.
- Tālāk noklikšķiniet uz Izveidojiet repozitoriju. Norādiet repozitorija nosaukumu un iestatiet tā redzamību uz vienu vai otru Publisks vai Privāts un pēc tam noklikšķiniet Izveidot.
- Lai nosūtītu savas lietojumprogrammas Docker attēlu uz Docker Hub, vispirms ir jāpiesakās savā kontā, izmantojot termināli, un pēc tam jānorāda savs lietotājvārds un parole.
docker pieteikšanās
- Pēc tam atjauniniet sava Docker attēla nosaukumu, lai tas atbilstu šim formātam:
/ . Palaidiet tālāk norādīto komandu, lai veiktu šīs izmaiņas:
docker tag /
- Visbeidzot, nospiediet savu Docker attēlu.
dokera stumšana /< repo nosaukums>
Docker izmantošana izstrādē
Šī rokasgrāmata skāra tikai daļu no potenciāla, ko Docker var piedāvāt. Tomēr tagad varat izmantot Docker konteinerizācijas tehnoloģiju, lai iesaiņotu jebkuru lietojumprogrammu un visas tās atkarības kā attēlus, kurus var izvietot dažādās izstrādes jomās, kā arī ražošanas vidēs, piemēram, mākonī bez jebkādām žagas.