Se puede acceder a esta aplicación Tutorial Node.js aquí.
Esta aplicación web de nodo es una aplicación web React atendida por Express. Está documentado y luego publicado en AWS Elastic Beanstalk.
Primero, cree una aplicación React llamada 'My-App' y vaya a la carpeta:
npx create-react-app my-app
cd my-app
Luego, instale y guarde Express:
npm install express --save
Una vez que haya terminado los pasos anteriores, puede ejecutar la aplicación React en el modo de desarrollo: npm run start
Cree el archivo 'server.js' como lo siguiente y guárdelo en la carpeta raíz del proyecto:
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}`);
En el archivo Packle.json, agregar:
"proxy": "http://localhost:8080"
Después de terminar los pasos anteriores, puede ejecutar la compilación en su aplicación React:
npm run build
y ejecute Express para servir a la aplicación React:
node server.js
Para usar Docker, regístrese en Docker e instale Docker y/o Docker Desktop según sea necesario. Una vez que la instalación de Docker está completa, cree un archivo llamado 'DockerFile' ejecutando:
touch Dockerfile
En el DockerFile, especifique la imagen de la que desea construir. El último número de imagen para la aplicación Node.js está disponible en el Docker Hub.
FROM node:14
A continuación, cree el directorio de trabajo de su aplicación:
WORKDIR /usr/src/app
Luego, copie su paquete.json e instale las dependencias agregando las siguientes líneas:
COPY package*.json ./
RUN npm install
Para agrupar el código fuente en su aplicación, agregue:
COPY . .
Su aplicación se ejecuta en el puerto 8080, así que agregue esta línea:
EXPOSE 8080
Finalice especifique el comando para iniciar su aplicación:
CMD [ "node", "server.js" ]
El Dockerfile completo debería verse así:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
Cree el archivo .dockerignore y agregue las líneas a continuación: node_modules npm-debug.log Esto evitará que los módulos de nodo locales y los registros de depuración se copien en la imagen Docker. Captura de pantalla de .Dockerignore: 
Para construir la imagen Docker, ejecute el siguiente comando:
docker build -t <your username>/<your app name> .
Para ejecutar la imagen construida en el puerto 49160, ejecute:
docker run -p 49160:8080 -d <your username>/<your app name>
La bandera -p redirige un puerto público a un puerto privado dentro del contenedor.
Para confirmar que la imagen se está ejecutando: Ejecutar:
docker ps
Para implementar una imagen remota de Docker en AWS Elastic Beanstalk, presione la imagen al Hub Docker:
docker push <your username>/<your app name>:latest
Obtenga más información
Como referencia, Node.js ha publicado una guía sobre cómo dockerizar una aplicación Node.js aquí.
Si no ha utilizado AWS Elastic Beanstalk antes, puede comenzar leyendo las documentos.
Crear archivo dockerRun.aws.json según lo siguiente:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "your-docker-username/repo-name",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
]
}
Esto incluye información sobre la imagen remota de Docker que debe extraer elastic Beanstalk. Luego crearemos una aplicación elástica de Beanstalk y cargaremos este archivo.
Para configurar su aplicación en elastic beanstalk, primero, vaya a las aplicaciones Elastic Beanstalk -> y haga clic en "Crear una nueva aplicación".
Ingrese el nombre de su aplicación: 
Haga clic en "Crear un nuevo entorno" para la aplicación que acaba de crear: 
Seleccione 'Entorno del servidor web' para esta aplicación: 
Para 'Plataforma', elija 'Docker' y la rama y la versión de la plataforma como desee.
Para 'Código de aplicación', elija 'Cargar su código' y cargar DockerRun.aws.json que acaba de crear: 

Navegue a 'Configurar más opciones' y elija una configuración preestablecida o cree una configuración que contenga un equilibrador de carga. 
La aplicación se creará en un momento y se implementará en la dirección ElasticBeanStalk: 
Obtenga más información
Como referencia, AWS tiene documentos sobre la implementación de Docker Container en AWS Elastic Beanstalk.
Puede comprar una dirección de dominio en cualquier plataforma como desee. Este ejemplo demostrará cómo conectar su aplicación implementada con una dirección comprada en Google Domains.
Primero, elija un nombre de dominio que le guste y comprelo.
La dirección de dominio se mostrará en su cuenta de Google Domains después de la compra. Vaya a 'DNS' en el menú izquierdo y desplácese a 'Registros de recursos personalizados'
Agregue un registro CNAME, coloque su dirección de aplicación elástica de BeanStalk como 'Datos' y 'www' como 'nombre': 
También necesitamos agregar servidores de nombres personalizados en la página 'DNS'. Haremos esto en la sección "Servidores de nombres". 
Según AWS, "una zona alojada le dice a la Ruta 53 cómo responder a las consultas DNS para un dominio". Primero creemos una zona alojada en la ruta 53 de AWS.
Navegue a la Ruta 53 en la consola de AWS, y luego a 'zonas alojadas'.
Haga clic en 'Crear zona alojada' e ingrese la dirección de dominio que acaba de comprar: 
Se creará una zona alojada: 
Copie los 'valores' enumerados para el tipo 'ns' uno por uno a 'servidores de nombres personalizados' en los dominios de Google: 
Observe que los cambios realizados en los dominios de Google pueden tomar hasta 48 horas para entrar en vigencia.
Para configurar HTTPS, debemos obtener un certificado SSL en AWS y vincularlo a la dirección de dominio.




