Cette application Tutorial Node.js est accessible ici.
Cette application Web de Node est une application Web React desservie par Express. Il est dockée puis publiée sur AWS Elastic Beanstalk.
Tout d'abord, créez une application React nommée «My-App» et accédez au dossier:
npx create-react-app my-app
cd my-app
Ensuite, installez et enregistrez Express:
npm install express --save
Une fois que vous avez terminé les étapes ci-dessus, vous pouvez exécuter l'application React dans le mode de développement: npm run start
Créez le fichier 'Server.js' comme suivant et enregistrez-le dans le dossier racine du projet:
const express = require('express');
const bodyParser = require('body-parser')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));
const PORT = process.env.PORT || 8080;
const HOST = '0.0.0.0';
app.get('/hello', (req, res) => {
return res.send('Hello World!')
});
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(PORT);
console.log(`Running on http://${HOST}:${PORT}`);
Dans le fichier package.json, ajouter:
"proxy": "http://localhost:8080"
Après avoir terminé les étapes ci-dessus, vous pouvez exécuter Build sur votre application React:
npm run build
et exécutez Express pour servir l'application React:
node server.js
Pour utiliser Docker, inscrivez-vous sur Docker et installez Docker et / ou Docker Desktop au besoin. Une fois l'installation de Docker terminée, créez un fichier nommé «dockerfile» en exécutant:
touch Dockerfile
Dans le dockerfile, spécifiez l'image à partir de laquelle vous souhaitez construire. Le dernier numéro d'image pour l'application Node.js est disponible sur le centre Docker.
FROM node:14
Ensuite, créez le répertoire de travail de votre application:
WORKDIR /usr/src/app
Ensuite, copiez votre package.json et installez les dépendances en ajoutant les lignes suivantes:
COPY package*.json ./
RUN npm install
Pour regrouper le code source de votre application, ajoutez:
COPY . .
Votre application fonctionne sur le port 8080, alors ajoutez cette ligne:
EXPOSE 8080
Terminer en spécifiez la commande pour démarrer votre application:
CMD [ "node", "server.js" ]
Le Dockerfile complet devrait ressembler à ceci:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
Créez un fichier .dockaignore et ajoutez les lignes comme suit: node_modules npm-debug.log Cela empêchera les modules de nœud locaux et les journaux de débogage d'être copiés dans l'image docker. Capture d'écran de .Dockerignore: 
Pour construire l'image Docker, exécutez la commande suivante:
docker build -t <your username>/<your app name> .
Pour exécuter l'image construite sur le port 49160, exécutez:
docker run -p 49160:8080 -d <your username>/<your app name>
Le drapeau -p redirige un port public vers un port privé à l'intérieur du conteneur.
Pour confirmer que l'image est en cours d'exécution, exécutez:
docker ps
Afin de déployer une image Docker distante sur AWS Elastic Beanstalk, poussez l'image vers Docker Hub:
docker push <your username>/<your app name>:latest
Apprendre encore plus
Pour référence, Node.js a publié un guide sur la façon de docker une application Node.js ici.
Si vous n'avez pas utilisé AWS Elastic Beanstalk auparavant, vous pouvez commencer par la lecture des documentations.
Créez le fichier dockerrun.aws.json comme suit:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "your-docker-username/repo-name",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
]
}
Cela comprend des informations sur l'image Docker distante que le haricot élastique doit extraire. Nous créerons ensuite une application Beanstalk élastique et téléchargerons ce fichier.
Pour configurer votre application sur Elastic Beanstalk, allez d'abord à la console Elastic Beanstalk -> Applications, puis cliquez sur "Créer une nouvelle application".
Entrez le nom de votre application: 
Cliquez sur "Créer un nouvel environnement" pour l'application que vous venez de créer: 
Sélectionnez «Environnement du serveur Web» pour cette application: 
Pour «plate-forme», choisissez «docker» et la branche et la version de la plate-forme comme vous le souhaitez.
Pour «code d'application», choisissez «Télécharger votre code» et télécharger dockerrun.aws.json que vous venez de créer: 

Accédez à «Configurer plus d'options» et choisissez une configuration prédéfinie ou créez une configuration qui contient un équilibreur de charge. 
L'application sera créée dans un instant et sera déployée à l'adresse ElasticBeanStalk: 
Apprendre encore plus
Pour référence, AWS a des documents sur le déploiement du conteneur Docker sur AWS Elastic Beanstalk.
Vous pouvez acheter une adresse de domaine sur n'importe quelle plate-forme comme vous le souhaitez. Cet exemple montrera comment connecter votre application déployée avec une adresse achetée auprès de Google Domains.
Tout d'abord, choisissez un nom de domaine que vous aimez et achetez-le.
L'adresse de domaine s'affichera dans votre compte Google Domains après l'achat. Accédez à «DNS» dans le menu de gauche et faites défiler vers des «enregistrements de ressources personnalisés»
Ajoutez un enregistrement CNAME, mettez votre adresse d'application Elastic BeanStalk en tant que «données» et «www» comme «nom»: 
Nous devons également ajouter des serveurs de nom personnalisés sur la page «DNS». Nous le ferons dans la section "serveurs de noms". 
Selon AWS, «une zone hébergée indique la route 53 comment répondre aux requêtes DNS pour un domaine». Créons d'abord une zone hébergée sur AWS Route 53.
Accédez à la route 53 dans la console AWS, puis aux «zones hébergées».
Cliquez sur «Créer une zone hébergée» et entrez l'adresse de domaine que vous venez d'acheter: 
Une zone hébergée sera créée: 
Copiez les «valeurs» répertoriées pour le type 'ns' une par une à des «serveurs de nom personnalisés» dans Google Domains: 
Notez que les modifications apportées sur les domaines Google peuvent prendre jusqu'à 48 heures pour prendre effet.
Pour configurer HTTPS, nous devons obtenir un certificat SSL sur AWS et le lier à l'adresse de domaine.




