Dockerizujte svoje rozhranie Node.js REST API pomocou technológie kontajnerizácie spoločnosti Docker, ktorá zjednodušuje proces nasadenia a správy.

Proces nasadzovania a spúšťania aplikácií v rôznych prostrediach môže byť problematický, pretože je potrebné zvážiť množstvo faktorov ako je nastavenie premenných prostredia na konfiguráciu potrebných závislostí a špecifických verzií rôznych softvérových balíkov.

Využitím technológie kontajnerizácie od Dockera však môžete nasadzovať aplikácie v rôznych prostrediach s minimálnym úsilím so všetkými potrebnými závislosťami v dockerovom obraze. To znamená, že sa nemusíte starať o konfiguráciu. Vďaka tomu je proces nasadzovania a spúšťania aplikácií v rôznych prostrediach hračkou.

Čo je Docker?

Docker je vývojová platforma, ktorá poskytuje nástroje a prostredie na balenie aplikácií ako prenosných obrazov, ktoré možno spustiť ako samostatné spustiteľné komponenty v kontajneroch.

Tieto kontajnery tvoria kód aplikácie a požadované závislosti, aby aplikácia úspešne fungovala v rôznych prostrediach spustenia bez akýchkoľvek problémov.

instagram viewer

Skôr ako začnete, nainštalujte Docker na svoj lokálny počítač. Skontrolujte požiadavky a pokyny na inštaláciu špecifické pre platformu z oficiálnej dokumentácie.

Vytvorte rozhranie Node.js REST API

Začať, vytvorte webový server Node.js.

V ňom nájdete kód tejto aplikácie úložisko GitHub.

Ďalej nainštalujte požadované balíky pre tento projekt.

npm nainštalovať morgan pg knex

The str balík sa používa na vytvorenie spojenia s databázou PostgreSQL. knex, na druhej strane poskytuje jednoduché API na interakciu s PostgreSQL — použijete ho na písanie SQL dotazov.

Nakoniec použijete morgan, middleware, ktorý zaznamenáva požiadavky a odpovede HTTP na konzole na ladenie a monitorovanie vašej aplikácie spustenej v kontajneri Docker.

Nakoniec otvorte index.js súbor a pridajte kód pod ním implementuje jednoduché REST API s tromi trasami.

konšt vyjadriť = vyžadovať("expresné")
konšt morgan = vyžadovať("morgan")
konšt app = express()
konšt db = vyžadovať('./db')
konšt PORT = process.env. PORT || 5000

app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ predĺžený: pravda }))

app.get('/', (req, res) => req.send("Ahoj Svet!" ))

app.get('/users', async (req, res) => {
konšt užívatelia = čakať db.select().from('používatelia')
res.json (používatelia)
})

app.post('/users', async (req, res) => {
konšt užívateľ = čakať db('používatelia').insert({ názov: req.body.name }).returning('*')
res.json (používateľ)
})

app.listen (PORT, () => konzoly.log(`Server hore na PORT:${PORT}`))

Nakonfigurujte pripojenie k databáze

Rozhranie REST API bude interagovať s inštanciou PostgreSQL spoločnosti Docker, najprv však musíte nakonfigurovať pripojenie k databáze vo svojej aplikácii. V koreňovom adresári priečinka projektu vytvorte a db.js súbor a pridajte kód nižšie.

konšt knex = vyžadovať('knex')
modul.exports = knex({
zákazník: 'postgres',
pripojenie: {
hostiteľ: 'db',
užívateľ: 'testUser',
heslo: 'mojeheslo123',
databáza: 'testUser',

},
})

Nastavte súbory migrate.js a seed.js

Tieto dva súbory umožnia vytvoriť tabuľku v databáze a naplniť ju testovacími údajmi cez API. Vytvorte nový priečinok, skripty, v koreňovom adresári vášho projektu a pridajte dva súbory: migrate.js a seed.js.

V migrate.js súbor, pridajte kód nižšie:

konšt db = vyžadovať('../db');
(async () => {
skúste {
čakať db.schema.dropTableIfExists('používatelia')
čakať db.schema.withSchema('verejné').createTable('používatelia', (tabuľka) => {
table.increments()
table.string('názov')
})
konzoly.log('Vytvorená tabuľka používateľov!')
process.exit(0)
} chytiť (chyba) {
konzoly.log (chyba)
process.exit(1)
}
})()

Tento kód vytvorí a používateľov tabuľka so stĺpcom id s automatickým prírastkom a a názov stĺpec v databáze.

Ďalej v seed.js súbor, pridajte kód nižšie:

konšt db = vyžadovať('../db');
(async () => {
skúste {
čakať db('používatelia').insert({ názov: 'Test User1' })
čakať db('používatelia').insert({ názov: 'Test User2' })
konzoly.log('Pridaní fiktívni používatelia!')
process.exit(0)
} chytiť (chyba) {
konzoly.log (chyba)
process.exit(1)
}
})()

Tento kód implementuje asynchrónnu funkciu, ktorá vloží dvoch používateľov do databázy PostgreSQL.

Nakoniec pridajte tieto príkazy do svojho package.json súbor.

"skriptá": {
"štart": "node index.js",
"migrovať": "node scripts/migrate.js",
"semeno": "node scripts/seed.js"

},

Keďže nemáte nakonfigurovaného klienta, na testovanie rozhrania API budete musieť spustiť tieto dva súbory ako skripty spolu s npm beh príkaz.

Nastavte súbor Dockerfile

Dockerfile definuje pokyny, ktoré vyžaduje Docker engine na vytvorenie obrazu Docker. V koreňovom adresári vášho projektu vytvorte nový súbor a pomenujte ho, Dockerfile. Potom pridajte nasledujúce pokyny na vytvorenie obrazu Docker pre aplikáciu Node.js.

OD uzol:16.3.0-alpský3.13
WORKDIR /app
KOPÍROVAŤ balíček*.json ./
RUN inštalácia npm
KOPÍROVAŤ. .
VYSTAVIŤ8000
CMD [ "uzol", "index.js" ]

Poďme si to rozobrať:

  • OD - Táto inštrukcia nastavuje základný obrázok pre aplikáciu, ktorým je obrázok Node.js Alpine, odľahčená verzia obrázku Node.js, ktorú možno nájsť v registri Docker.
  • WORKDIR - súpravy /app adresár ako pracovný adresár.
  • KOPÍROVAŤ balíček*.json./ - Inštruuje Docker, aby skopíroval všetky súbory s týmto formátom názvu súboru z aktuálneho adresára do /app priečinok.
  • RUN - spúšťa a vytvára obraz.
  • KOPÍROVAŤ.. - skopíruje zdrojové súbory do /app priečinok.
  • VYSTAVIŤ - toto prikáže Dockerovi, aby vystavil port v kontajneri vonkajšiemu prostrediu, v tomto prípade hostiteľskému počítaču.
  • CMD - určuje príkaz, ktorý sa má vykonať, keď sa z obrázka vytvorí kontajner Docker.

Vytvorte súbor Docker Compose File

Aby mohla aplikácia Node.js interagovať s inštanciou PostgreSQL Docker, tieto dve aplikácie musia bežať v kontajneroch Docker v rovnakom sieťovom prostredí.

Z tohto dôvodu musíte definovať a zostaviť obraz aplikácie aj inštanciu PostgreSQL pomocou Docker Compose — nástroj, ktorý vám umožňuje vytvárať a spravovať viacero kontajnerov Docker.

Jednoducho povedané, pomocou Docker Compose môžete definovať služby, ktoré tvoria vašu aplikáciu ako jeden celok, v tomto prípade Node.js REST API a PostgreSQL databáza.

Vytvorte nový súbor, docker-compose.yml, v koreňovom adresári a pridajte kód nižšie:

verzia:'3.9'

služby:
server:
postaviť:.
porty:
-'5000:5000'
záleží na:
-db
db:
obrázok:'postgres'
porty:
-'4321:5432'
prostredie:
POSTGRES_PASSWORD:'mojeheslo123'
POSTGRES_USER:'testUser'
objemy:
-data:/var/lib/postgresql/data

objemy:
údaje:

Tento kód vytvorí a spustí dva kontajnery Docker. Prvý kontajner, server, Docker Compose používa súbor Dockerfile na vytvorenie obrazu pre tento kontajner.

Tiež určuje, že kontajner servera závisí od db kontajner. To znamená, server kontajner sa musí spustiť po db kontajner, ktorý sa s ním spojí.

Druhým kontajnerom je kontajner databázy PostgreSQL. Pre tento kontajner nemusíte zadať Dockerfile, pretože bude vytvorený z obrazu PostgreSQL v registri obrazov Docker.

Vytvorte obrázky Docker

Na vytvorenie obrázkov a spustenie dvoch kontajnerov použite príkaz Docker Compose.

docker-zložiť -d

Po úspešnom dokončení procesu by ste mali vidieť podobnú odpoveď.

Otestujte REST API

Spustite príkaz uvedený nižšie a otestujte REST API spustené v kontajneri Docker. Mal by vytvoriť tabuľku v databáze PostgreSQL.

docker exec docker_node-server-1 migrácia spustenia npm

Mali by ste vidieť podobnú odpoveď.

Zdieľanie obrázkov Docker

Posledným krokom je odoslanie obrazu Docker pre vašu aplikáciu Node.js do Docker Hub. Je to podobné, ako keby ste svoje projekty posielali na GitHub.

  • Zamierte k Docker Hub a zaregistrujte si účet a prihláste sa do používateľského panela.
  • Ďalej kliknite na Vytvorte úložisko. Zadajte názov svojho úložiska a nastavte jeho viditeľnosť na ktorýkoľvek z nich Verejné alebo Súkromné a potom kliknite Vytvorte.
  • Ak chcete odoslať obrázok Docker vašej aplikácie do Docker Hub, musíte sa najprv prihlásiť do svojho účtu cez terminál a potom zadať svoje používateľské meno a heslo.
prihlásenie do docker
  • Potom aktualizujte názov obrázka Docker tak, aby zodpovedal tomuto formátu: /. Ak chcete vykonať túto zmenu, spustite príkaz uvedený nižšie:
 docker tag /
  • Nakoniec zatlačte svoj obrázok Docker.
 docker push /< názov repo>

Používanie Dockeru vo vývoji

Táto príručka sa dotkla len zlomku potenciálu, ktorý môže Docker ponúknuť. Teraz však môžete použiť technológiu kontajnerizácie spoločnosti Docker na zabalenie akejkoľvek aplikácie a všetkých jej závislostí ako obrázky, ktoré možno nasadiť v rôznych vývojových, ako aj produkčných prostrediach, ako je cloud bez akýchkoľvek škytavka.