Dockerizirajte svoj Node.js REST API z Dockerjevo tehnologijo kontejnerizacije, ki poenostavi postopek uvajanja in upravljanja.

Postopek uvajanja in izvajanja aplikacij v različnih okoljih je lahko težaven, saj je treba upoštevati številne dejavnike. kot je nastavitev spremenljivk okolja za konfiguriranje potrebnih odvisnosti in posebnih različic različnih programskih paketov.

Vendar pa lahko z uporabo Dockerjeve tehnologije posodabljanja razmestite aplikacije v različnih okoljih z minimalnim naporom z vsemi potrebnimi odvisnostmi v sliki dockerja. To pomeni, da vam ni treba skrbeti za kakršno koli konfiguracijo. Zaradi tega je postopek uvajanja in izvajanja aplikacij v različnih okoljih preprost.

Kaj je Docker?

Docker je razvojna platforma, ki ponuja orodja in okolje za pakiranje aplikacij kot prenosnih slik, ki jih je mogoče izvajati kot samostojne izvršljive komponente v vsebnikih.

Ti vsebniki sestavljajo kodo aplikacije in zahtevane odvisnosti za uspešno delovanje aplikacije v različnih izvajalnih okoljih brez težav.

instagram viewer

Preden začnete, namestite Docker na svoj lokalni računalnik. Preverite predpogoje za določeno platformo in navodila za namestitev v uradni dokumentaciji.

Ustvarite API REST Node.js

Za začetek, ustvarite spletni strežnik Node.js.

Kodo te aplikacije najdete v Repozitorij GitHub.

Nato namestite potrebne pakete za ta projekt.

npm namestite morgan pg knex

The str paket se uporablja za vzpostavitev povezave z bazo podatkov PostgreSQL. knex, na drugi strani pa ponuja preprost API za interakcijo s PostgreSQL - uporabljali ga boste za pisanje poizvedb SQL.

Nazadnje boste uporabili morgan, vmesna programska oprema, ki beleži zahteve HTTP in odgovore na konzoli, za odpravljanje napak in spremljanje vaše aplikacije, ki se izvaja v vsebniku Docker.

Končno odprite index.js datoteko in dodajte spodnjo kodo implementira preprost API REST s tremi trasami.

konst izraziti = zahtevati("ekspresno")
konst morgan = zahtevati("morgan")
konst app = express()
konst db = zahtevati('./db')
konst PORT = process.env. PRISTANIŠČE || 5000

app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ podaljšan: prav }))

app.get('/', (req, res) => res.send('Pozdravljen, svet!' ))

app.get('/uporabniki', asinh (req, res) => {
konst uporabniki = čakati db.select().from('uporabniki')
res.json (uporabniki)
})

app.post('/uporabniki', asinh (req, res) => {
konst uporabnik = čakati db('uporabniki').vstavi({ ime: req.body.name }).returning('*')
res.json (uporabnik)
})

app.listen (PORT, () => konzola.log(`Strežnik na PORT:${PORT}`))

Konfigurirajte povezavo z bazo podatkov

REST API bo deloval z Dockerjevim primerkom PostgreSQL, vendar morate najprej konfigurirati povezavo z bazo podatkov v svoji aplikaciji. V korenskem imeniku mape projekta ustvarite a db.js datoteko in dodajte spodnjo kodo.

konst knex = zahtevati('knex')
modul.exports = knex({
stranka: 'postgres',
povezava: {
gostitelj: 'db',
uporabnik: 'testUser',
geslo: 'moje geslo123',
baza podatkov: 'testUser',

},
})

Nastavite datoteki migrate.js in seed.js

Ti dve datoteki bosta omogočili ustvarjanje tabele v bazi podatkov in jo napolniti s testnimi podatki prek API-ja. Ustvari novo mapo, skripte, v korenski imenik vašega projekta in dodajte dve datoteki: migrate.js in seed.js.

V migrate.js datoteko dodajte spodnjo kodo:

konst db = zahtevati('../db');
(asinh () => {
poskusi {
čakati db.schema.dropTableIfExists('uporabniki')
čakati db.schema.withSchema('javno').createTable('uporabniki', (tabela) => {
table.increments()
table.string('ime')
})
konzola.log('Ustvarjena tabela uporabnikov!')
proces.izhod(0)
} ulov (napaka) {
konzola.log (napaka)
proces.izhod(1)
}
})()

Ta koda bo ustvarila a uporabniki tabelo s stolpcem id, ki se samodejno povečuje, in a ime stolpec v bazi podatkov.

Naprej, v seed.js datoteko dodajte spodnjo kodo:

konst db = zahtevati('../db');
(asinh () => {
poskusi {
čakati db('uporabniki').vstavi({ ime: 'Testni uporabnik1' })
čakati db('uporabniki').vstavi({ ime: 'Testni uporabnik2' })
konzola.log('Dodani navidezni uporabniki!')
proces.izhod(0)
} ulov (napaka) {
konzola.log (napaka)
proces.izhod(1)
}
})()

Ta koda implementira asinhrono funkcijo, ki bo v bazo podatkov PostgreSQL vstavila dva uporabnika.

Na koncu dodajte te ukaze svojemu package.json mapa.

"skripte": {
"začetek": "vozlišče index.js",
"selitev": "skripti vozlišč/migrate.js",
"seme": "skripti vozlišč/seed.js"

},

Ker nimate konfiguriranega odjemalca, boste morali za testiranje API-ja zagnati dve datoteki kot skripta poleg npm teči ukaz.

Nastavite datoteko Docker

Datoteka Docker definira navodila, ki jih zahteva motor Docker za izdelavo slike Docker. V korenskem imeniku vašega projekta ustvarite novo datoteko in jo poimenujte, Dockerfile. Nato dodajte naslednja navodila za izdelavo slike Docker za aplikacijo Node.js.

OD vozlišče:16.3.0-alpski3.13
DELOVNI DIR /app
KOPIRATI paket*.json ./
TECI namestitev npm
KOPIRATI. .
IZPOSTITE8000
CMD [ "vozlišče", "index.js" ]

Razčlenimo:

  • OD - To navodilo nastavi osnovno sliko za aplikacijo, ki je slika Node.js Alpine, lahka različica slike Node.js, ki jo najdete v registru Docker.
  • DELOVNI DIR - kompleti /app imenik kot delovni imenik.
  • KOPIRATI paket*.json./ - naroči Dockerju, naj kopira vse datoteke s to obliko imena datoteke iz trenutnega imenika v /app mapo.
  • TECI - izvaja in gradi podobo.
  • KOPIRATI.. - kopira izvorne datoteke v /app mapo.
  • IZPOSTITE - to naroči Dockerju, naj vrata znotraj vsebnika izpostavi zunanjemu okolju, v tem primeru gostiteljskemu računalniku.
  • CMD - določa ukaz, ki se izvede, ko je vsebnik Docker ustvarjen iz slike.

Ustvarite datoteko Docker Compose

Za interakcijo aplikacije Node.js z Dockerjevim primerkom PostgreSQL se morata aplikaciji izvajati v vsebnikih Docker znotraj istega omrežnega okolja.

Iz tega razloga morate definirati in zgraditi sliko aplikacije in primerek PostgreSQL z uporabo Docker Compose — orodje, ki vam omogoča izdelavo in upravljanje več vsebnikov Docker.

Preprosto povedano, z uporabo Docker Compose lahko definirate storitve, ki sestavljajo vašo aplikacijo kot eno samo enoto, v tem primeru Node.js REST API in zbirko podatkov PostgreSQL.

Ustvari novo datoteko, docker-compose.yml, v korenskem imeniku in dodajte spodnjo kodo:

različica:'3.9'

storitve:
strežnik:
zgraditi:.
vrata:
-'5000:5000'
odvisno od:
-db
db:
slika:'postgres'
vrata:
-'4321:5432'
okolje:
POSTGRES_PASSWORD:'moje geslo123'
POSTGRES_USER:'testUser'
količine:
-podatki:/var/lib/postgresql/data

količine:
podatki:

Ta koda bo ustvarila in zagnala dva vsebnika Docker. Prva posoda, strežnik, Docker Compose uporablja datoteko Dockerfile za izdelavo slike za ta vsebnik.

Prav tako določa, da je vsebnik strežnika odvisen od db posoda. Kar pomeni, strežnik posodo je treba zagnati po db vsebnik za povezavo z njim.

Drugi vsebnik je vsebnik baze podatkov PostgreSQL. Za ta vsebnik vam ni treba določiti Dockerfile, saj bo ustvarjen iz slike PostgreSQL v Dockerjevem registru slik.

Zgradite slike Dockerja

Z ukazom Docker Compose ustvarite slike in zaženite dva vsebnika.

docker-compose up -d

Ko je postopek uspešno zaključen, bi morali videti podoben odgovor.

Preizkusite REST API

Zaženite spodnji ukaz, da preizkusite API REST, ki se izvaja v vsebniku Docker. Ustvariti mora tabelo v bazi podatkov PostgreSQL.

docker exec docker_node-server-1 npm run migrate

Morali bi videti podoben odgovor.

Skupna raba slik Docker

Zadnji korak je potiskanje Dockerjeve slike za vašo aplikacijo Node.js v Docker Hub. To je podobno potiskanju vaših projektov na GitHub.

  • Pojdite na Docker Hub ter se prijavite za račun in se prijavite na uporabniško nadzorno ploščo.
  • Nato kliknite na Ustvari repozitorij. Vnesite ime svojega skladišča in nastavite njegovo vidnost na bodisi Javno oz Zasebno in nato kliknite Ustvari.
  • Če želite sliko Docker svoje aplikacije potisniti v Docker Hub, se morate najprej prijaviti v svoj račun prek terminala in nato vnesti svoje uporabniško ime in geslo.
docker prijava
  • Nato posodobite ime svoje slike Docker, da se ujema s to obliko: /. Zaženite spodnji ukaz, da izvedete to spremembo:
 docker oznaka /
  • Na koncu potisnite svojo sliko Docker.
 docker push /

Uporaba Dockerja v razvoju

Ta vodnik se je dotaknil le delčka potenciala, ki ga lahko ponudi Docker. Vendar pa lahko zdaj uporabite Dockerjevo tehnologijo kontejnerizacije za pakiranje katere koli aplikacije in vseh njenih odvisnosti kot slike, ki jih je mogoče namestiti v različnih razvojnih in produkcijskih okoljih, kot je oblak brez kakršnega koli kolcanje.