Dockerizirajte svoj Node.js REST API koristeći Dockerovu tehnologiju kontejnerizacije, koja pojednostavljuje proces implementacije i upravljanja.

Proces implementacije i pokretanja aplikacija u različitim okruženjima može biti gnjavaža jer postoji niz čimbenika koje treba uzeti u obzir kao što je postavljanje varijabli okoline za konfiguriranje potrebnih ovisnosti i specifičnih verzija različitih softverskih paketa.

Međutim, korištenjem Dockerove tehnologije spremnika možete implementirati aplikacije u različitim okruženjima uz minimalan napor sa svim potrebnim ovisnostima u docker slici. To znači da se ne morate brinuti o bilo kakvoj konfiguraciji. To čini proces postavljanja i pokretanja aplikacija u različitim okruženjima lakim.

Što je Docker?

Lučki radnik je razvojna platforma koja pruža alate i okruženje za pakiranje aplikacija kao prijenosnih slika koje se mogu pokretati kao samostalne izvršne komponente u spremnicima.

Ovi spremnici sačinjavaju kod aplikacije i potrebne ovisnosti za uspješno pokretanje aplikacije u različitim okruženjima za izvođenje bez ikakvih problema.

instagram viewer

Prije nego počnete, instalirajte Docker na svoje lokalno računalo. Provjerite preduvjete specifične za platformu i upute za instalaciju iz službene dokumentacije.

Napravite Node.js REST API

Započeti, stvoriti Node.js web poslužitelj.

Kôd ove aplikacije možete pronaći u GitHub spremište.

Zatim instalirajte potrebne pakete za ovaj projekt.

npm instalirajte morgan pg knex

The str paket se koristi za uspostavljanje veze s PostgreSQL bazom podataka. knex, s druge strane, pruža jednostavan API za interakciju s PostgreSQL — koristit ćete ga za pisanje SQL upita.

Na kraju ćete koristiti morgan, posredni softver koji bilježi HTTP zahtjeve i odgovore na konzoli, radi otklanjanja pogrešaka i praćenja vaše aplikacije koja radi u Docker spremniku.

Na kraju otvorite index.js datoteku i dodajte kod ispod nje implementira jednostavan REST API sa tri rute.

konst izraziti = zahtijevati("izraziti")
konst morgan = zahtijevati("morgan")
konst app = express()
konst db = zahtijevati('./db')
konst LUKA = proces.env. LUKA || 5000

app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ proširena: pravi }))

app.get('/', (req, res) => res.send('Pozdrav svijete!' ))

app.get('/korisnici', asinkroni (req, res) => {
konst korisnici = čekati db.select().from('korisnici')
res.json (korisnici)
})

app.post('/korisnici', asinkroni (req, res) => {
konst korisnik = čekati db('korisnici').umetnuti({ Ime: req.body.name }).returning('*')
res.json (korisnik)
})

app.listen (PORT, () => konzola.log(`Poslužitelj na PORT-u:${PORT}`))

Konfigurirajte vezu s bazom podataka

REST API će komunicirati s Dockerovom PostgreSQL instancom, međutim, prvo trebate konfigurirati vezu s bazom podataka u svojoj aplikaciji. U korijenskom direktoriju mape vašeg projekta kreirajte a db.js datoteku i dodajte kod u nastavku.

konst knex = zahtijevati('knex')
modul.izvozi = knex({
klijent: 'postgres',
veza: {
domaćin: 'db',
korisnik: 'testUser',
lozinka: 'moja zaporka123',
baza podataka: 'testUser',

},
})

Postavite datoteke migrate.js i seed.js

Ove dvije datoteke omogućit će stvaranje tablice u bazi podataka i njeno popunjavanje testnim podacima putem API-ja. Stvorite novu mapu, skripte, u korijenski direktorij vašeg projekta i dodajte dvije datoteke: migrirati.js i sjeme.js.

u migrirati.js datoteku, dodajte kod ispod:

konst db = zahtijevati('../db');
(asinkroni () => {
probati {
čekati db.schema.dropTableIfExists('korisnici')
čekati db.schema.withSchema('javnost').createTable('korisnici', (tablica) => {
table.increments()
table.string('Ime')
})
konzola.log('Stvorena tablica korisnika!')
proces.izlaz(0)
} ulov (pogreška) {
konzola.log (pogreška)
proces.izlaz(1)
}
})()

Ovaj kod će stvoriti a korisnika tablica sa stupcem ID-a koji se automatski povećava i a Ime stupac u bazi podataka.

Dalje, u sjeme.js datoteku, dodajte kod ispod:

konst db = zahtijevati('../db');
(asinkroni () => {
probati {
čekati db('korisnici').umetnuti({ Ime: 'Testni korisnik1' })
čekati db('korisnici').umetnuti({ Ime: 'Testni korisnik2' })
konzola.log('Dodani lažni korisnici!')
proces.izlaz(0)
} ulov (pogreška) {
konzola.log (pogreška)
proces.izlaz(1)
}
})()

Ovaj kod implementira asinkronu funkciju koja će umetnuti dva korisnika u PostgreSQL bazu podataka.

Na kraju dodajte ove naredbe u svoj paket.json datoteka.

"skripte": {
"početak": "indeks čvora.js",
"migrirati": "skripte čvora/migrate.js",
"sjeme": "skripte čvora/seed.js"

},

Budući da nemate konfiguriran klijent, da biste testirali API, morat ćete pokrenuti dvije datoteke kao skripte uz npm pokrenuti naredba.

Postavite Dockerfile

Dockerfile definira upute potrebne Docker mašini za izradu Docker slike. U korijenskom direktoriju vašeg projekta stvorite novu datoteku i dajte joj naziv, Dockerfile. Zatim dodajte sljedeće upute za izradu Docker slike za aplikaciju Node.js.

IZ čvor:16.3.0-alpski3.13
RADNI DIR /app
KOPIRATI paket*.json ./
TRČANJE npm instalirati
KOPIRATI. .
IZLOŽITI8000
CMD [ "čvor", "index.js" ]

Razdvojimo to:

  • IZ - Ova uputa postavlja osnovnu sliku za aplikaciju, a to je slika Node.js Alpine, lagana verzija slike Node.js koja se može pronaći u Docker registru.
  • RADNI DIR - setovi /app imenik kao radni imenik.
  • KOPIRATI paket*.json./ - naređuje Dockeru da kopira sve datoteke s tim formatom naziva datoteke iz trenutnog direktorija u /app mapa.
  • TRČANJE - izvodi i gradi imidž.
  • KOPIRATI.. - kopira izvorne datoteke u /app mapa.
  • IZLOŽITI - ovo nalaže Dockeru da izloži port unutar spremnika vanjskom okruženju, u ovom slučaju, glavnom računalu.
  • CMD - određuje naredbu koja će se izvršiti kada se Docker spremnik kreira iz slike.

Stvorite Docker Compose datoteku

Da bi Node.js aplikacija mogla komunicirati s Dockerovom PostgreSQL instancom, dvije aplikacije moraju se izvoditi u Docker spremnicima unutar istog mrežnog okruženja.

Iz tog razloga trebate definirati i izgraditi i sliku aplikacije i PostgreSQL instancu pomoću Docker Compose — alat koji vam omogućuje izradu i upravljanje više Docker spremnika.

Jednostavno rečeno, koristeći Docker Compose, možete definirati usluge koje čine vašu aplikaciju kao jednu jedinicu, u ovom slučaju, Node.js REST API i PostgreSQL bazu podataka.

Stvorite novu datoteku, docker-compose.yml, u korijenski direktorij i dodajte kod ispod:

verzija:'3.9'

usluge:
poslužitelj:
izgraditi:.
luke:
-'5000:5000'
ovisi o:
-db
db:
slika:'postgres'
luke:
-'4321:5432'
okoliš:
POSTGRES_PASSWORD:'moja zaporka123'
POSTGRES_USER:'testUser'
svezaci:
-podaci:/var/lib/postgresql/data

svezaci:
podaci:

Ovaj kod će stvoriti i pokrenuti dva Docker spremnika. Prvi kontejner, poslužitelj, Docker Compose koristi Dockerfile za izradu slike za ovaj spremnik.

Također navodi da spremnik poslužitelja ovisi o db spremnik. Što znači, poslužitelj spremnik se mora pokrenuti nakon db spremnik za povezivanje s njim.

Drugi spremnik je spremnik baze podataka PostgreSQL. Ne morate navesti Dockerfile za ovaj spremnik budući da će biti stvoren iz PostgreSQL slike u Dockerovom registru slika.

Izgradite Docker slike

Koristite naredbu Docker Compose za izradu slika i pokretanje dva spremnika.

docker-compose up -d

Trebali biste vidjeti sličan odgovor nakon što je proces uspješno dovršen.

Testirajte REST API

Pokrenite naredbu u nastavku da testirate REST API koji radi u Docker spremniku. Trebao bi stvoriti tablicu u PostgreSQL bazi podataka.

docker exec docker_node-server-1 npm pokrenuti migraciju

Trebali biste vidjeti sličan odgovor.

Dijeljenje Docker slika

Zadnji korak je guranje Docker slike za vašu Node.js aplikaciju u Docker Hub. Ovo je slično guranju vaših projekata na GitHub.

  • Prijeđite na Docker Hub i prijavite se za račun i prijavite se na korisničku nadzornu ploču.
  • Zatim kliknite na Stvorite spremište. Navedite naziv svog spremišta i postavite njegovu vidljivost na bilo koje Javnost ili Privatna a zatim kliknite Stvoriti.
  • Da biste gurnuli Docker sliku vaše aplikacije u Docker Hub, prvo se trebate prijaviti na svoj račun putem terminala, a zatim unijeti svoje korisničko ime i lozinku.
docker prijava
  • Zatim ažurirajte naziv svoje Docker slike tako da odgovara ovom formatu: /. Pokrenite naredbu u nastavku da izvršite ovu promjenu:
 docker oznaka /
  • Na kraju gurnite svoju Docker sliku.
 docker push /< naziv spremišta>

Korištenje Dockera u razvoju

Ovaj je vodič dotaknuo samo djelić potencijala koji Docker može ponuditi. Međutim, sada možete koristiti Dockerovu tehnologiju kontejnerizacije za pakiranje bilo koje aplikacije i svih njezinih ovisnosti kao slike koje se mogu implementirati u različita razvojna, kao i proizvodna okruženja poput oblaka bez ikakvih štucanje.