Telakoita Node.js REST API käyttämällä Dockerin konttitekniikkaa, joka yksinkertaistaa käyttöönottoa ja hallintaa.

Sovellusten käyttöönotto ja käyttäminen eri ympäristöissä voi olla vaivalloista, koska on otettava huomioon useita tekijöitä kuten ympäristömuuttujien asettaminen tarvittavien riippuvuuksien ja eri ohjelmistopakettien versioiden määrittämiseen.

Dockerin konttiteknologiaa hyödyntämällä voit kuitenkin ottaa käyttöön sovelluksia eri ympäristöissä mahdollisimman pienellä vaivalla kaikilla tarvittavilla Docker-kuvan riippuvuuksilla. Tämä tarkoittaa, että sinun ei tarvitse huolehtia minkään kokoonpanon tekemisestä. Tämä tekee sovellusten käyttöönotosta ja suorittamisesta eri ympäristöissä helppoa.

Mikä on Docker?

Satamatyöläinen on kehitysalusta, joka tarjoaa työkalut ja ympäristön sovellusten pakkaamiseen kannettaviksi kuviksi, joita voidaan käyttää erillisinä suoritettavina komponentteina säiliöissä.

Nämä säilöt muodostavat sovelluksen koodin ja tarvittavat riippuvuudet, jotta sovellus voi toimia onnistuneesti eri ajonaikaisissa ympäristöissä ilman ongelmia.

Ennen kuin aloitat, asenna Docker paikalliselle koneellesi. Tarkista alustakohtaiset edellytykset ja asennusohjeet virallisesta dokumentaatiosta.

Luo Node.js REST API

Aloita Luo Node.js-verkkopalvelin.

Löydät tämän sovelluksen koodin siitä GitHub-arkisto.

Asenna seuraavaksi tähän projektiin tarvittavat paketit.

npm asenna morgan pg knex

The s pakettia käytetään yhteyden muodostamiseen PostgreSQL-tietokantaan. knextoisaalta tarjoaa yksinkertaisen API: n vuorovaikutukseen PostgreSQL: n kanssa – käytät sitä SQL-kyselyjen kirjoittamiseen.

Lopuksi käytät morgan, väliohjelmisto, joka kirjaa HTTP-pyynnöt ja -vastaukset konsoliin virheenkorjaukseen ja Docker-säilön sovelluksen valvontaan.

Avaa lopuksi index.js tiedosto ja lisää koodi sen alle toteuttaa yksinkertaisen REST API: n kolmella reitillä.

konst express = vaatia("ilmaista")
konst morgan = vaatia("morgan")
konst sovellus = express()
konst db = vaatia('./db')
konst PORT = process.env. SATAMA || 5000

app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ laajennettu: totta }))

app.get('/', (req, res) => res.send('Hei maailma!' ))

app.get('/käyttäjät', asynk (req, res) => {
konst käyttäjät = odottaa db.select().from("käyttäjät")
res.json (käyttäjät)
})

app.post('/käyttäjät', asynk (req, res) => {
konst käyttäjä = odottaa db("käyttäjät").insert({ nimi: req.body.name }).returning('*')
res.json (käyttäjä)
})

app.listen (PORT, () => konsoli.Hirsi(`Palvelin PORTissa:${PORT}`))

Määritä tietokantayhteys

REST API on vuorovaikutuksessa Dockerin PostgreSQL-ilmentymän kanssa, mutta sinun on ensin määritettävä tietokantayhteys sovelluksessasi. Luo projektikansiosi juurihakemistoon a db.js tiedosto ja lisää alla oleva koodi.

konst knex = vaatia('knex')
moduuli.exports = knex({
asiakas: "postgres",
yhteys: {
isäntä: 'db',
käyttäjä: 'testUser',
Salasana: 'mypassword123',
tietokanta: 'testUser',

},
})

Määritä migrate.js- ja seed.js-tiedostot

Nämä kaksi tiedostoa mahdollistavat taulukon luomisen tietokantaan ja sen täyttämisen testitiedoilla API: n kautta. Luo uusi kansio, käsikirjoituksia, projektisi juurihakemistoon ja lisää kaksi tiedostoa: migrate.js ja seed.js.

Vuonna migrate.js tiedosto, lisää alla oleva koodi:

konst db = vaatia('../db');
(asynk () => {
yrittää {
odottaa db.schema.dropTableIfExists("käyttäjät")
odottaa db.schema.withSchema('julkinen').createTable("käyttäjät", (taulukko) => {
table.increments()
table.string('nimi')
})
konsoli.Hirsi("Käyttäjätaulukko luotu!")
process.exit(0)
} ottaa kiinni (err) {
konsoli.log (err)
process.exit(1)
}
})()

Tämä koodi luo a käyttäjiä taulukko, jossa on automaattisesti kasvava id-sarake ja a nimi sarakkeessa tietokannassa.

Seuraavaksi vuonna seed.js tiedosto, lisää alla oleva koodi:

konst db = vaatia('../db');
(asynk () => {
yrittää {
odottaa db("käyttäjät").insert({ nimi: "Testaa käyttäjä1" })
odottaa db("käyttäjät").insert({ nimi: "Testaa käyttäjä2" })
konsoli.Hirsi("Lisätty valekäyttäjiä!")
process.exit(0)
} ottaa kiinni (err) {
konsoli.log (err)
process.exit(1)
}
})()

Tämä koodi toteuttaa asynkronisen toiminnon, joka lisää kaksi käyttäjää PostgreSQL-tietokantaan.

Lisää lopuksi nämä komennot omaan package.json tiedosto.

"käsikirjoitukset": {
"alkaa": "solmuindeksi.js",
"muuttaa": "node scripts/migrate.js",
"siemen": "node scripts/seed.js"

},

Koska sinulla ei ole asiakasohjelmaa määritettynä, API: n testaamiseksi sinun on suoritettava nämä kaksi tiedostoa komentosarjoina npm juoksu komento.

Määritä Docker-tiedosto

Docker-tiedosto määrittelee Docker-moottorin tarvitsemat ohjeet Docker-kuvan rakentamiseen. Luo projektisi juurihakemistoon uusi tiedosto ja nimeä se, Docker-tiedosto. Lisää sitten seuraavat ohjeet Docker-kuvan luomiseksi Node.js-sovellukselle.

FROM solmu:16.3.0-alppi 3.13
TYÖOHJ /app
KOPIO paketti*.json ./
JUOSTA npm asennus
KOPIO. .
PALJISTA8000
CMD [ "solmu", "index.js" ]

Puretaan se:

  • FROM - Tämä ohje määrittää sovelluksen peruskuvan, joka on Node.js Alpine -näköistiedosto, kevyt versio Node.js-kuvasta, joka löytyy Dockerin rekisteristä.
  • TYÖOHJ - setit /app hakemistosta työhakemistoksi.
  • KOPIO paketti*.json./ - kehottaa Dockeria kopioimaan kaikki kyseisellä tiedostomuodolla olevat tiedostot nykyisestä hakemistosta hakemistoon /app kansio.
  • JUOSTA - toteuttaa ja rakentaa kuvan.
  • KOPIO.. - kopioi lähdetiedostot tiedostoon /app kansio.
  • PALJISTA - tämä ohjeistaa Dockeria paljastamaan säiliön sisällä olevan portin ulkoiselle ympäristölle, tässä tapauksessa isäntäkoneelle.
  • CMD - määrittää komennon, joka suoritetaan, kun Docker-säilö luodaan kuvasta.

Luo Docker Compose -tiedosto

Jotta Node.js-sovellus voisi olla vuorovaikutuksessa Dockerin PostgreSQL-ilmentymän kanssa, näiden kahden sovelluksen on toimittava Docker-säilöissä samassa verkkoympäristössä.

Tästä syystä sinun on määritettävä ja rakennettava sekä sovelluksen imago että PostgreSQL-ilmentymä käyttämällä Docker Compose — työkalu, jonka avulla voit rakentaa ja hallita useita Docker-säiliöitä.

Yksinkertaisesti sanottuna Docker Composea käyttämällä voit määrittää sovelluksesi muodostavat palvelut yhdeksi yksiköksi, tässä tapauksessa Node.js REST API: n ja PostgreSQL-tietokannan.

Luo uusi tiedosto, docker-compose.yml, juurihakemistoon ja lisää alla oleva koodi:

versio:'3.9'

palvelut:
palvelin:
rakentaa:.
portit:
-'5000:5000'
riippuu:
-db
db:
kuva:"postgres"
portit:
-'4321:5432'
ympäristö:
POSTGRES_PASSWORD:'mypassword123'
POSTGRES_USER:'testUser'
määrät:
-data:/var/lib/postgresql/data

määrät:
tiedot:

Tämä koodi luo ja suorittaa kaksi Docker-säilöä. Ensimmäinen kontti, palvelin, Docker Compose käyttää Docker-tiedostoa tämän säilön kuvan rakentamiseen.

Se määrittää myös, että palvelinsäilö riippuu db kontti. Eli palvelin säiliö on käynnistettävä sen jälkeen db säiliö yhdistääksesi sen.

Toinen säilö on PostgreSQL-tietokantasäiliö. Sinun ei tarvitse määrittää Docker-tiedostoa tälle säilölle, koska se luodaan Dockerin kuvarekisterin PostgreSQL-kuvasta.

Rakenna Docker Images

Käytä Docker Compose -komentoa kuvien rakentamiseen ja kahden säilön käynnistämiseen.

docker-compose up -d

Sinun pitäisi nähdä samanlainen vastaus, kun prosessi on suoritettu onnistuneesti.

Testaa REST-sovellusliittymää

Suorita alla oleva komento testataksesi Docker-säilön REST-sovellusliittymää. Sen pitäisi luoda taulukko PostgreSQL-tietokantaan.

docker exec docker_node-server-1 npm suorita migrate

Sinun pitäisi nähdä samanlainen vastaus.

Docker-kuvien jakaminen

Viimeinen vaihe on Node.js-sovelluksesi Docker-kuvan työntäminen Docker Hubiin. Tämä on samanlaista kuin projektien työntäminen GitHubiin.

  • Suuntaa kohti Docker Hub ja rekisteröidy tilille ja kirjaudu sisään käyttäjän kojelautaan.
  • Napsauta seuraavaksi Luo arkisto. Anna arkistosi nimi ja aseta sen näkyvyydeksi jompikumpi Julkinen tai Yksityinen ja napsauta sitten Luoda.
  • Jos haluat siirtää sovelluksesi Docker-kuvan Docker Hubiin, sinun on ensin kirjauduttava tilillesi päätteen kautta ja annettava sitten käyttäjätunnuksesi ja salasanasi.
Docker-kirjautuminen
  • Päivitä seuraavaksi Docker-kuvasi nimi vastaamaan tätä muotoa: /. Tee tämä muutos suorittamalla alla oleva komento:
 telakkatunniste /
  • Työnnä lopuksi Docker-kuvasi.
 telakkatyöntö /< repon nimi>

Dockerin käyttö kehitystyössä

Tämä opas kosketti vain murto-osaa Dockerin tarjoamista mahdollisuuksista. Voit kuitenkin nyt käyttää Dockerin konttiteknologiaa pakataksesi minkä tahansa sovelluksen ja kaikki sen riippuvuudet kuvia, joita voidaan ottaa käyttöön eri kehitysvaiheissa sekä tuotantoympäristöissä, kuten pilvessä ilman mitään hikka.