Kuidas Noker.js-i rakendust Amazoni veebiteenustesse Dockeri abil juurutada

Pistik: avaldati algselt ajakirjas Zeolearn.
Palju kasulikku arendaja sisu, nagu see artikkel, leiate Zeolearni ajaveebist. Blogis on artiklid, mille keskmes on veebi / tarkvara arendamine: AngularJS, ReactJS, NodeJS, Django ja Data Science (sealhulgas masinõpe, andmeteadus, Python ja süvaõpe).

Sisukord

1. Sissejuhatus
2. Eeltingimused
3. Kiire praimer Dockeril ja AWS-il
4. Mida me kasutusele võtame
5. Dockerfaili loomine
6. Doki pildi üles ehitamine
7. Doki konteineri käitamine
8. Registri (ECR) loomine ja rakenduse pildi üleslaadimine sellesse
9. Uue ülesande määratluse loomine
10. Klastri loomine
11. Teenuse loomine selle käitamiseks
12. Järeldus

1. Sissejuhatus

Enamiku arendajate tuttav on koodide kirjutamine, mis asju täidavad. Mõnikord peame võtma vastutuse SysAdmini või DevOpsi inseneri poolt ja juurutama oma koodbaasi tootmisesse, kus see aitab ettevõttel lahendada klientide jaoks probleeme.

Selles õpetuses näitan teile, kuidas dokkkida Node.js-i rakendus ja paigutada see Amazoni veebiteenusesse (AWS), kasutades Amazoni ECR-i (elastsete konteinerite register) ja ECS-i (elastne konteineriteenus).

2. Eeltingimused

Selle õpetuse läbimiseks vajate järgmist:

  1. Sõlm ja Npm: uusimate versioonide installimiseks järgige seda linki.
  2. Algteadmised Node.js-st.
  3. Docker: install pakub Docker Engine'i, Docker CLI klienti ja muud lahedat kraami. Järgige oma operatsioonisüsteemi juhiseid. Et kontrollida, kas paigaldus töötas, käivitage see terminalis:
dokker - ümberehitus

Ülaltoodud käsk peaks kuvama versiooni numbri. Kui seda ei juhtu, siis ei installitud korralikult.

4. AWS-i konto: registreeruge tasuta astme jaoks. Teie telefoninumbri ja pangakaardi kinnitamiseks on ooteaeg. Pärast seda on teil juurdepääs konsoolile.

5. AWS CLI: järgige oma OS-i juhiseid. Teil on vaja Python installitud.

3. Kiire praimer Dockeril ja AWS-il

Docker on avatud lähtekoodiga tarkvara, mis võimaldab teil pakkida rakenduse koos vajalike sõltuvuste ja keskkonnaga konteinerisse, mille saate saata ja käivitada ükskõik kuhu. See ei sõltu platvormidest ega riistvarast ning seetõttu saab konteineripõhine rakendus töötada suvalises keskkonnas.

Dockeri konteinerid lahendavad paljusid probleeme, näiteks kui rakendus töötab töökaaslase arvutis, kuid ei tööta teie oma, või töötab kohalikus arenduskeskkonnas, kuid ei tööta, kui installite selle serverisse.

Amazoni veebiteenused (AWS) pakuvad ettevõtetele usaldusväärset, mastabeeritavat ja odavat pilvandmetöötluse teenust. Nagu ma juba mainisin, keskendub see õpetus ECR ja ECS teenuste kasutamisele.

4. Mida me kasutusele võtame

Ehitame kiiresti näidisrakenduse, mida kasutame selle õpetuse jaoks. See saab olema väga lihtne Node.js rakendus.

Sisestage oma terminali järgmine teave:

// loo uus kataloog
mkdir sample-nodejs-app
// vaheta uude kataloogi
cd proov-nodejs-app
// Initsialiseerige npm
npm init -y
// install express
npm install express
// loo server.js fail
puudutage server.js

Avage server.js ja kleepige sinna allpool olev kood:

// server.js
const express = nõua ('express')
const app = ekspress ()
app.get ('/', (req, res) => {
    res.send ('Tere maailm Node.js rakendusest!')
})
app.listen (3000, () => {
    console.log ('Server töötab 3000 peal')
})

Rakenduse käivitamiseks:

sõlme server.js

Juurdepääs sellele saab aadressil http: // localhost: 3000. Peaksite teremaailma hankima Node.js rakendusest! kuvatakse teie brauseris. Täielik kood on saadaval GitHubis.

Vaatame nüüd meie väga olulist rakendust tootmisele .

5. Dockerfaili loomine

Alustame rakenduse dokkimist, luues meie projektikataloogis ühe faili nimega Dockerfile.

Dockerfile on plaan, millest meie pildid on ehitatud. Ja siis muutuvad pildid konteineriteks, milles käitame oma rakendusi.

Iga Dockerfile algab aluspildiga. Dockerfaili loomiseks on kaks võimalust:

  1. Kasutage tavalist OS-i aluspilti (näiteks Ubuntu OS, Debian, CentOS jne) ja installige sinna rakenduskeskkond, näiteks Node.js VÕI
  2. Kasutage juba installitud rakenduse keskkonnaga OS-i pildi saamiseks keskkonnasõbralikku baaspilti.

Jätkame teise lähenemisviisiga. Saame kasutada Dockerhubis hostitud ametlikku pilti Node.js, mis põhineb Alpine Linuxil.

Kirjutage see Docker-faili:

Sõlmest: 8-alpiinne
Käivita mkdir -p / usr / src / rakendus
WORKDIR / usr / src / rakendus
KOOPIA. .
RUN npm installimine
KOKKUPUUDE 3000
CMD ["sõlm", "server.js"]

Jalutame selle rea ridade kaupa läbi, et näha, mis siin toimub ja miks.

Sõlmest: 8-alpiinne

Ehitame siin oma Dockeri pildi, kasutades ametlikku Node.js pilti Dockerhubist (aluspiltide hoidla).

  • Alustage meie Dockerfile FROM-i väljavõttega. Siin saate määratleda oma aluspildi.
  • RUN-käsk võimaldab meil täita käsu kõigeks, mida soovite teha. Lõime alamkataloogi / usr / src / app, mis hoiab meie rakenduse koodi doki kujutises.
  • Käsk WORKDIR loob alamkataloogi, mille lõime töökataloogiks kõigile RUN, CMD, ENTRYPOINT, COPY ja ADD juhistele, mis järgivad seda Dockerfile'is. / usr / src / app on meie töötav kataloog.
  • KOOPIA võimaldab meil kopeerida faile allikast sihtkohta. Kopeerisime oma sõlme rakenduskoodi (server.js ja package.json) sisu praegusest kataloogist meie dokkuri pildi töökataloogi.
  • Käsk EXPOSE teatab Dockerile, et konteiner kuulab käitusaega määratud võrgupordides. Täpsustasime porti 3000.
  • Viimane, kuid mitte vähem tähtis, täpsustab CCM-i käsk meie rakenduse käivitamise käsku. See annab Dockerile teada, kuidas teie rakendust käivitada. Siin kasutame sõlme server.js, mida tavaliselt kasutatakse failide Node.js-is käitamiseks.

Selle valmis failiga oleme nüüd valmis uue Dockeri pildi üles ehitama.

6. Doki pildi üles ehitamine

Veenduge, et teil oleks Docker töökorras. Nüüd, kui oleme oma Docker-faili määratlenud, ehitame pildi pealkirjaga, kasutades -t:

doki ehitamine -t proov-nodejs-app.

See väljastab räsi ja tähtnumbrilisi stringe, mis identifitseerivad konteinereid ja pilte viimasel real: „Edukalt ehitatud”:

Ehitamise konteksti saatmine Dockeri deemonile 1.966 MB
Samm 1/7: Sõlmest: 6-alpi
 ---> 998971a692ca
Samm 2/7: käivitage mkdir -p / usr / src / app
 ---> Vahemälu kasutamine
 ---> f1aa1c112188
Samm 3/7: WORKDIR / usr / src / rakendus
 ---> Vahemälu kasutamine
 ---> b4421b83357b
Samm 4/7: Kopeerimine. .
 ---> 836112e1d526
Samm 5/7: installige RUN npm
 ---> töötab 1c6b36b5381c
npm WARN sample-nodejs-app@1.0.0 Kirjeldust pole
npm WARN sample-nodejs-app@1.0.0 Hoidlaväli puudub.
Vahemahuti 1c6b36b5381c eemaldamine
 ---> 93999e6c807f
Samm 6/7: KOKKUPUUDE 3000
 ---> töötab 7419020927f1
Vahemahuti 7419020927f1 eemaldamine
 ---> ed4ac8a31f83
Samm 7/7: CMD ["sõlm", "server.js"]
 ---> töötab seadmes c77d34f4c873
Vahemahuti c77d34f4c873 eemaldamine
 ---> eaf97859f909
Eaf97859f909 ehitamine õnnestus
// ärge oodake oma terminalilt samu väärtusi.

7. Dockeri konteineri käitamine

Oleme ehitanud doki pildi. Varem loodud piltide nägemiseks käivitage:

doki pildid

Peaksite äsja loodud pilti nägema ajaliselt kõige värskemana:

Kopeeri pildi ID. Konteineri käitamiseks kirjutame terminali:

doki käitamine -p 80: 3000 {image-id}
// täitke oma pildi-id

Vaikimisi saavad Dockeri konteinerid luua ühenduse välismaailmaga, kuid välismaailm ei saa konteineritega ühendust luua. -p avaldab kõik hostitud liideste katmata pordid. Avaldame siin rakenduse pordi 80: 3000 jaoks. Kuna me käitame Dockerit lokaalselt, minge vaatamiseks aadressile http: // localhost.

Dockeri konteinerite käitamist saate igal ajal kontrollida, tippides:

doki konteiner

Lõpuks saate konteineri töö peatada:

dokipeatus {image-id}

Jätke Dockeri deemon käima.

8. Looge register (ECR) ja laadige sinna üles rakenduse pilt

Amazoni elastsete konteinerite register (ECR) on täielikult hallatav Dockeri konteineriregister, mis teeb arendajatel hõlpsaks Dockeri konteineripiltide salvestamise, haldamise ja juurutamise. Amazon ECR on integreeritud Amazoni elastsete konteinerite teenusega (ECS), lihtsustades teie arendamist tootmise töövoogudeks.

Märksõna “elastne” tähendab, et saate mahtu vastavalt vajadusele muuta või seda vähendada.

Sammud:

  1. Minge AWS-i konsooli ja logige sisse.
  2. Valige EC2 konteineriteenus ja Alusta

3. Kuvatakse esimene käivitusleht, kerige alla ja klõpsake nuppu Tühista> sisestage ECSi armatuurlaud.

4. Selleks, et CLI saaks teie AWS-kontoga ühenduse luua, käivitage terminalis:

aws seadistada

Kui teie AWS CLI oli õigesti installitud, küsib aws configure järgmist:

$ aws seadistab
AWS-i juurdepääsuvõtme ID [puudub]: pääsukood
AWS salajane juurdepääsuvõti [puudub]: salavõti
Piirkonna vaikenimi [puudub]: us-west-2
Vaikimisi väljundvorming [puudub]:

Turvavolitused saate oma AWS-i kontolt saada oma kasutajanime alt> Pääsuklahvid. Käivitage aws konfigureerimine uuesti ja täitke õigesti.

4. Looge uus hoidla ja sisestage nimi (järjepidevuse tagamiseks eelistatavalt sama konteineri nimega nagu kohalikus dev-keskkonnas).

Kasutage näiteks näidis-nodejs-app.

Dockeri piltide loomiseks, sildistamiseks ja tõukamiseks järgige AWS-i konsooli 5 juhist:

Märkus. Järgnevad argumendid on minu oma ja erinevad teie omadest, seega järgige lihtsalt oma konsoolis kirjeldatud samme.

  1. Hankige Dockeri sisselogimiskäsk, mida saate kasutada oma Dockeri kliendi autentimiseks oma registrisse:
    Märkus. Kui saate vea „Tundmatud suvandid: - no-include-email”, installige AWS CLI uusim versioon. Lisateavet leiate siit.
aws ecr get-login - no-include-email --regioon us-east-2

2. Käivitage eelmises etapis tagastatud doki sisselogimiskäsk (lihtsalt kopeerige ja kleepige). Märkus. Kui kasutate Windows PowerShelli, käivitage selle asemel järgmine käsk:

Invoke-Expression-Command (aws ecr get-login - no-include-email --region us-east-2)

See peaks väljundiks: sisselogimine õnnestus.

3. Koostage oma Dockeri pilt, kasutades järgmist käsku. Teavet Dockeri faili nullist loomise kohta leiate juhistest siit. Võite selle toimingu vahele jätta, kuna meie pilt on juba üles ehitatud:

doki ehitamine -t proov-nodejs-app.

4. Kui ehitamine on lõpule viidud, sildistage oma pilt märksõnaga (näiteks uusim), et saaksite pildi sellesse hoidlasse lükata:

doki sildi proov-nodejs-app: viimane 559908478199.dkr.ecr.us-east-2.amazonaws.com/näide-nodejs-app:latest

5. Käivitage järgmine käsk, et lükata see pilt oma vastloodud AWS-i hoidlasse:

doki tõuge 559908478199.dkr.ecr.us-east-2.amazonaws.com/näide-nodejs-app:latest

9. Looge uus ülesande määratlus

Ülesanded toimivad nagu Dockeri CLI doki käitamise käsk, kuid mitme konteineri korral. Need määratlevad:

  • Konteineripildid (kasutamiseks)
  • Mahud (kui neid on)
  • Võrgustikud Keskkonnamuutujad
  • Pordi kaardistused

Vajutage ECS-i juhtpaneeli jaotises Ülesande määratlused nuppu Loo uus ülesande määratlus (ECS):

Valige ülesande nimi ja toimige järgmiselt.

  • Lisage konteiner: proov-nodejs-app (see, mille me lükkasime).
  • Pilt: teie konteineri URL. Kaevandus on 559908478199.dkr.ecr.us-east-2.amazonaws.com/näide-nodejs-app
  • Pehme piir: 512
  • Kaart 80 (host) kuni 3000 (konteiner) proovi-nodejs-rakenduse jaoks
  • Env muutujad:

NODE_ENV: tootmine

10. Looge klaster

Klaster on koht, kus AWS-konteinerid töötavad. Nad kasutavad EC2 eksemplaridega sarnaseid konfiguratsioone. Määratlege järgmine:

  • Klastri nimi: demo-nodejs-app-klaster
  • EC2 eksemplari tüüp: t2.micro

(Märkus: valite juhtumid vastavalt oma rakenduse suurusele. Siin valisime väikseima. Teie valik mõjutab seda, kui palju raha teile kuu lõpus arve esitatakse. Lisateabe saamiseks külastage siin). Aitäh Nicholas Kolatsisele, kes juhtis tähelepanu sellele, et eelmine m4.large valik oli selle õpetuse jaoks kallis.

  • Juhtumite arv: 1
  • EBS-i salvestusruum: 22
  • Võtmepaar: puudub
  • VPC: uus

Kui protsess on lõpule viidud, võite klõpsata valikul Vaata klastrit.

11. Looge selle käitamiseks teenus

Minge jaotisse Ülesande määratlus> klõpsake nuppu demo-nodejs-app> klõpsake uusimat versiooni.

Klõpsake ülesande määratluse sees rippmenüül Toimingud ja valige Loo servcie

Kasutage järgmist:

  • Käivituse tüüp: EC2
  • Teenuse nimi: demo-nodejs-app-service
  • Ülesannete arv: 1

Jätke valikud vahele ja klõpsake nuppu Loo teenus ja Kuva teenus.

Näete selle olekut PENDING. Andke sellele natuke aega ja see näitab Jooksmist.

Minge jaotisse Cluster (lingi kaudu meie loodud teenusest)> EC2 eksemplarid> Avaliku DNSi kuvamiseks klõpsake konteineri eksemplaril.

Meie rakenduse vaatamiseks külastage avalikku DNS-i! Kaevandus on ec2–18–219–113–111.us-east-2.compute.amazonaws.com

12. Järeldus.

Palju õnne selle postituse lõpetamisel! Haara Githubist Dockeri osa kood.

Toetage mind julgelt (devapparel.co) ja vaadake seda vaadates hea välja. Samuti kommenteerige või jagage seda postitust. Täname, et lugesite!

Pistik: taaskord palju kvaliteetsema sisu leidmiseks külastage Zeolearni ajaveebi.