Es ist fast dasselbe wie auf Offizielle Seite von Node.js. Bitte beachten Sie.
Erstellen Sie zunächst lokal eine Anwendung node.js.
Erstellen Sie ein neues Verzeichnis zum Erstellen einer Node.js-Anwendung und verschieben Sie es.
$Name des mkdir-Verzeichnisses
$Name des CD-Verzeichnisses
$ touch package.json
package.json
{
"name": "docker_node_js",
"version": "1.0.0",
"description": "Node.js on Docker",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.1"
}
}
$ npm --version
--Version 5 oder höher wird empfohlen (da package-lock.json erstellt wird)
$ npm install
--Wenn die npm-Version 5 oder höher ist, wird package-lock.json nach dieser Ausführung automatisch erstellt.
Erstellen Sie server.js in dem Verzeichnis, in dem sich package.json befindet
$ touch server.js
server.js
'use strict';
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello World');
});
//Achten Sie auf Verbindungen mit der angegebenen Portnummer
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
Erstellen Sie eine Docker-Datei in dem Verzeichnis, in dem Sie die js-Datei wie oben beschrieben erstellt haben.
Dockerfile
FROM node:lts
lts
als Tag (** lts: Langzeitunterstützung **) (Siehe hier für Laravels lts)Dockerfile
WORKDIR /usr/src/app
--Erstellen Sie ein Verzeichnis im Image, um den Quellcode dieser Anwendung zu speichern.
Dockerfile
COPY package*.json ./
RUN npm install
--Node.js und NPM sind bereits in dem diesmal verwendeten Image installiert. Installieren Sie daher im nächsten Schritt die erforderlichen Pakete. --Verwenden Sie Platzhalter (*), um sicherzustellen, dass sowohl package.json als auch package-lock.json kopiert werden.
npm install
ausgeführt, auch wenn sich eine Datei im Arbeitsverzeichnis ändert, und der Cache wird effektiv verwendet. Kann es nicht tun)Dockerfile
COPY . .
--Nach dem Ausführen des Prozesses "npm install" kopieren (bündeln) Sie den Inhalt des Arbeitsverzeichnisses in das Image.
Dockerfile
EXPOSE 8080
Dockerfile
CMD [ "node", "server.js" ]
Dockerfile
FROM node:lts
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "server.js" ]
Geben Sie in der .dockerignore-Datei die Datei an, die beim Erstellen ignoriert werden soll.
$ touch .dockerignore
.dockerignore
node_modules
npm-debug.log
--Diese Beschreibung verhindert, dass lokal installierte Module und Debug-Protokolle auf das Docker-Image kopiert oder die imageartigen Module überschrieben werden.
Erstellen Sie das Image basierend auf der erstellten Docker-Datei.
$ docker build -t node_tutorial:latest .
-t
: name: tag
schreiben.Überprüfen Sie das erstellte Bild
$ docker images node_tutorial:latest
$ docker run -p 49160:8080 -d node_tutorial:latest
---p
: Ordnen Sie den in server.js angegebenen Port dem Port von localhost zu
---d
: Beginnen Sie im Hintergrund
Überprüfen Sie das laufende Docker-Image
$ docker ps
$ curl -i localhost:49160
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
...
Hello, World!
---i
: Gibt sowohl den Header als auch den Body of Response aus
$ docker logs node_container
Running on http://0.0.0.0:8080
Recommended Posts