Ce que vous faites est presque le même que ce qui est écrit dans Page officielle de Node.js. Notez s'il vous plaît.
Tout d'abord, créez une application node.js localement.
Créez un nouveau répertoire pour créer une application Node.js et accédez-y.
$nom du répertoire mkdir
$nom du répertoire cd
$ 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
$ npm install
Créez server.js dans le répertoire où se trouve package.json
$ 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');
});
//Écoutez les connexions avec le numéro de port spécifié
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
Créez un Dockerfile dans le répertoire où vous avez créé le fichier js dans la procédure ci-dessus.
Dockerfile
FROM node:lts
--Cette fois, créez une image basée sur l'image de Node.js dans Docker Hub.
--Sélectionnez lts
pour la balise (** lts: support de longue date **) (Voir ici pour les lts de Laravel)
Dockerfile
WORKDIR /usr/src/app
--Créez un répertoire dans l'image pour stocker le code source de cette application. --Il est recommandé d'utiliser le chemin absolu (Reference)
Dockerfile
COPY package*.json ./
RUN npm install
--Node.js et NPM sont déjà installés dans l'image utilisée cette fois, donc installez les packages nécessaires à l'étape suivante. --Utilisez des caractères génériques (*) pour vous assurer que package.json et package-lock.json sont copiés.
npm install
, vous pouvez utiliser le cache lorsque ** package * .json n'a pas changé, vous pouvez donc réduire la charge de traitement ** (Si vous copiez tous les fichiers, même s'il n'y a pas de changement dans le package * .json, npm install
sera exécuté même s'il y a un changement dans un fichier dans le répertoire de travail, et le cache sera utilisé efficacement. Ne peut pas le faire)Dockerfile
COPY . .
npm install
, copiez (regroupez) le contenu du répertoire de travail dans l'image.Dockerfile
EXPOSE 8080
-p
lors de l'exécution de la commande docker run
.Dockerfile
CMD [ "node", "server.js" ]
Dockerfile
FROM node:lts
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "server.js" ]
Dans le fichier .dockerignore, spécifiez le fichier à ignorer lors de la construction.
$ touch .dockerignore
.dockerignore
node_modules
npm-debug.log
Créez l'image en fonction du Dockerfile créé.
$ docker build -t node_tutorial:latest .
-t
: name: tag
.Vérifiez l'image créée
$ docker images node_tutorial:latest
$ docker run -p 49160:8080 -d node_tutorial:latest
---p
: associe le port spécifié dans server.js au port de localhost
---d
: démarrer en arrière-plan
Vérifiez l'image Docker en cours d'exécution
$ 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
: affiche à la fois l'en-tête et le corps de la réponse
$ docker logs node_container
Running on http://0.0.0.0:8080
Recommended Posts