Een Node.js-applicatie dockeriseren

Een Node Js Applicatie Dockeriseren



Het dockeriseren van een applicatie omvat het specificeren van alle vereisten die nodig zijn om de applicatie uit te voeren en het vervolgens gebruiken van het Dockerbestand om een ​​gespecialiseerd Docker-image te bouwen dat met verschillende machines kan worden gedeeld. Dockeriseren van een “ Knooppunt.js ”-applicatie verbetert de consistentie en zorgt voor gemakkelijk debuggen aan de kant van de ontwikkelaar.

Vereisten







De vereisten voor het dockeriseren van een “ Knooppunt.js 'toepassing omvat het volgende:



  • Docker-installatie.
  • Basiskennis van de Node.js-applicatie.

Hoe kan ik een Node.js-applicatie dockeriseren?

A ' Knooppunt.js '-applicatie kan worden gedockeriseerd via de volgende stappen:



Stap 1: Maak een “package.json” -bestand





Maak eerst een nieuwe map waarin alle bestanden zullen worden opgenomen. Maak in deze map de “ pakket.json ”-bestand dat de app vertegenwoordigt, samen met zijn afhankelijkheden:

{
'naam' : 'docker_web_app' ,
'versie' : '1.0.0' ,
'beschrijving' : 'Node.js op Docker' ,
'auteur' : 'Eerste Laatste ' ,
'voornaamst' : 'server.js' ,
'scripts' : {
'begin' : 'knooppuntserver.js'
} ,
'afhankelijkheden' : {
'nadrukkelijk' : '^4.18.2'
} }



Stap 2: Genereer een “package-lock.json” -bestand

Voer binnen het bestand “package.json” de opdracht “ npm installeren cmdlet. Dit zal een “ pakket-lock.json ”-bestand dat als volgt naar de Docker-image wordt gekopieerd:

npm installeren

Stap 3: Maak een server

Maak daarna een “ server.js '-bestand dat een webapp declareert met behulp van de ' Express.js ' kader:

'gebruik strikt' ;

const express = vereisen ( 'nadrukkelijk' ) ;

const POORT = 8080 ;
const HOST = '0.0.0.0' ;

const app = express ( ) ;
app.get ( '/' , ( verzoek, res ) = > {
opnieuw.verzenden ( 'Hallo Wereld' ) ;
} ) ;

app.luister ( HAVEN, GASTHEER, ( ) = > {
console.log ( ` Draait op http: // ${HOST} : ${POORT} ` ) ;
} ) ;

Laten we nu verder gaan met de methodologieën om de applicatie binnen een Docker-container uit te voeren via een officiële Docker-image.

Stap 4: Maak een Dockerbestand

Maak handmatig een Dockerfile in dezelfde map die alle bestanden bevat. Schrijf in dit bestand de volgende regel code:

FROM-knooppunt: 18
WERKDIR / usr / src / app
KOPIEER pakket * .json . /
RUN npm installeren
KOPIE. .
BLOOTGEVEN 8080
CMD [ 'knooppunt' , 'server.js' ]

Voer in het bovenstaande codefragment de onderstaande stappen uit:

  • Gebruik eerst de nieuwste langetermijnondersteuningsversie 18 van het knooppunt als basisimage in Docker-hub .
  • Maak daarna een map waarin u de app-code in de afbeelding kunt opslaan.
  • Dit vertegenwoordigt de werkmap voor de toepassing.
  • Installeer nu de app-afhankelijkheden via “ npm ”.
  • Opmerking: Als npm versie 4 of eerder wordt gebruikt, wordt er geen “package-lock.json”-bestand gemaakt.
  • Kopieer nu de “ pakket.json ' bestand. Bundel ook de broncode van de app binnen de Docker-image via de “ KOPIËREN ' instructie.
  • Maak gebruik van de “ BLOOTGEVEN 'instructie om de app te laten binden aan poort 8080.
  • Definieer ten slotte de cmdlet om de applicatie uit te voeren via CMD, die de runtime definieert. Hier de ' knooppuntserver.js De cmdlet wordt gebruikt om de server te initiëren.

Stap 5: Maak een “.dockerignore”-bestand

Maak een “.dockerignore”-bestand in de “ Dockerbestand ” Directory/map met de hieronder gegeven inhoud:

knooppunt_modules
npm-debug.log

Deze inhoud voorkomt dat respectievelijk de lokale modules en foutopsporingslogboeken worden gekopieerd in de Docker-image.

Stap 6: Bouw de afbeelding

Bouw nu, binnen de map die het Dockerfile bevat, de afbeelding met behulp van de onderstaande cmdlet:

havenarbeider gebouwd. -T knooppunten / knooppunt-web-app

In deze cmdlet wordt “ knooppunten ” verwijst naar de mapnaam, dus specificeer de cmdlet dienovereenkomstig en de “ -T ' flag markeert de afbeelding.

Maak nu een lijst van de afbeeldingen via deze opdracht:

docker-afbeeldingen

Stap 7: Voer de afbeelding uit

Voer de afbeelding uit / voer deze uit met behulp van de onderstaande cmdlet:

havenarbeider uitgevoerd -P 49160 : 8080 -D knooppunten / knooppunt-web-app

Hier de ' -P De vlag leidt een openbare poort om naar een privépoort binnen de container en de -D De vlag voert de container uit in de vrijstaande modus, dat wil zeggen op de achtergrond.

Stap 8: Genereer de uitvoer van de app

Druk nu de uitvoer van de toepassing af met behulp van de volgende opdrachten:

havenarbeider ps
docker logt 77b1e3c8576e

Als het nodig is om binnen de containershell te navigeren, gebruik dan de “ uitvoerend cmdlet:

havenarbeider uitvoerend -Het 77b1e3c8576e / bak / bashen

Hier, ' 77b1e3c8576e ” vertegenwoordigt de ID van de container die kan worden gekopieerd via de uitgevoerde “ havenarbeider ps ' eerder commando.

Stap 9: De applicatie testen

Om de applicatie te testen, haalt u de poort van de app op die Docker in kaart heeft gebracht:

havenarbeider ps

In de bovenstaande cmdlet heeft Docker de “ 8080 “haven binnen de container naar de haven” 49160 ” op de machine.

Stap 10: De applicatie oproepen

Roep de applicatie op via de “ Krul cmdlet door naar de hierboven toegewezen poort te verwijzen en de vereiste waarden in te voeren:

Krul -i lokalehost: 49160

Stap 11: Sluit/beëindig de applicatie

Sluit ten slotte de applicatie af via de “ doden cmdlet:

havenarbeider doden 77b1e3c8576e

Bevestig ook of de applicatie is gestopt via deze opdracht met invoerwaarden:

Krul -i lokalehost: 49160

Conclusie

A ' Knooppunt.js '-applicatie kan worden gedockeriseerd door een server, een dockerfile, het '.dockerignore' -bestand te maken, de image te bouwen en uit te voeren, de uitvoer van de app te genereren en het testen, sluiten en bevestigen van het stoppen van de applicatie. In dit artikel wordt dieper ingegaan op het dockeriseren van een Node.js-applicatie.