Este aplicativo tutorial node.js pode ser acessado aqui.
Este aplicativo da Web Node é um aplicativo da Web React servido pelo Express. É dockerizado e depois publicado no AWS Elastic Beanstalk.
Primeiro, crie um aplicativo React chamado 'My-App' e entre na pasta:
npx create-react-app my-app
cd my-app
Em seguida, instale e salve o Express:
npm install express --save
Depois de terminar as etapas acima, você pode executar o aplicativo React no modo de desenvolvimento: npm run start
Crie o arquivo 'server.js' como seguindo e salve -o na pasta raiz do projeto:
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}`);
No arquivo package.json, add:
"proxy": "http://localhost:8080"
Depois de terminar as etapas acima, você pode executar o seu aplicativo React:
npm run build
e Run Express para servir o aplicativo React:
node server.js
Para usar o Docker, inscreva -se no Docker e instale o Docker e/ou o Docker Desktop, conforme necessário. Quando a instalação do Docker estiver concluída, crie um arquivo chamado 'Dockerfile' executando:
touch Dockerfile
No DockerFile, especifique a imagem que você deseja construir. O mais recente número de imagem para o aplicativo Node.js está disponível no Docker Hub.
FROM node:14
Em seguida, crie o diretório de trabalho do seu aplicativo:
WORKDIR /usr/src/app
Em seguida, copie seu package.json e instale as dependências adicionando as seguintes linhas:
COPY package*.json ./
RUN npm install
Para agrupar o código -fonte em seu aplicativo, adicione:
COPY . .
Seu aplicativo é executado na porta 8080, então adicione esta linha:
EXPOSE 8080
Termine especifique o comando para iniciar seu aplicativo:
CMD [ "node", "server.js" ]
O DockerFile completo deve ficar assim:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
Crie arquivo .dockerignore e adicione as linhas como seguintes: node_modules npm-debug.log Isso impedirá que os módulos de nó locais e os logs de depuração sejam copiados na imagem do docker. Captura de tela de .dockerignore: 
Para construir a imagem do Docker, execute o seguinte comando:
docker build -t <your username>/<your app name> .
Para executar a imagem construída na porta 49160, execute:
docker run -p 49160:8080 -d <your username>/<your app name>
O sinalizador -P redireciona uma porta pública para uma porta privada dentro do contêiner.
Para confirmar que a imagem está em execução, execute:
docker ps
Para implantar uma imagem remota do Docker no AWS Elastic Beanstalk, empurre a imagem para o Docker Hub:
docker push <your username>/<your app name>:latest
Saber mais
Para referência, o Node.js publicou um guia sobre como dockerize um aplicativo Node.js aqui.
Se você não usou o AWS Elastic Beanstalk antes, poderá começar lendo as documentações.
Crie o arquivo Dockerrun.aws.json como seguinte:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "your-docker-username/repo-name",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
]
}
Isso inclui informações sobre a imagem remota do Docker que o elástico deve puxar o feijão. Em seguida, criaremos um aplicativo de beanstalk elástico e carregaremos esse arquivo.
Para configurar seu aplicativo no Elastic Beanstalk, primeiro, acesse Elastic Beanstalk Console -> Aplicativos e clique em "Criar um novo aplicativo".
Digite o nome do seu aplicativo: 
Clique em "Criar um novo ambiente" para o aplicativo que você acabou de criar: 
Selecione 'Ambiente do servidor da web' para este aplicativo: 
Para 'plataforma', escolha 'Docker' e a ramificação e a versão da plataforma que desejar.
Para 'Código do Aplicativo', Escolha 'Carregue seu código' e faça o upload de Dockerrun.aws.json que você acabou de criar: 

Navegue para 'Configurar mais opções' e escolha uma configuração predefinida ou crie uma configuração que contenha um balanceador de carga. 
O aplicativo será criado em um momento e será implantado no endereço ElasticbeansTalk: 
Saber mais
Para referência, a AWS possui documentações sobre a implantação do Docker Container no AWS Elastic Beanstalk.
Você pode comprar um endereço de domínio em qualquer plataforma que desejar. Este exemplo demonstrará como conectar seu aplicativo implantado com um endereço adquirido dos domínios do Google.
Primeiro, escolha um nome de domínio que você gosta e compre.
O endereço do domínio será exibido na sua conta do Google Domains após a compra. Vá para 'DNS' no menu esquerdo e role para 'Records de recursos personalizados'
Adicione um registro CNAME, coloque seu endereço de aplicativo de beanstalk elástico como 'dados' e 'www' como 'nome': 
Também precisamos adicionar servidores de nomes personalizados na página 'DNS'. Faremos isso na seção "Name Servers". 
De acordo com a AWS, "uma zona hospedada diz à Rota 53 como responder às consultas DNS para um domínio". Vamos primeiro criar uma zona hospedada na AWS Route 53.
Navegue até a Rota 53 no console da AWS e depois para 'zonas hospedadas'.
Clique em 'Criar zona hospedada' e digite o endereço do domínio que você acabou de comprar: 
Uma zona hospedada será criada: 
Copie os 'valores' listados para o tipo 'ns' um por um para 'servidores de nome personalizados' no Google Domains: 
Observe que as alterações feitas nos domínios do Google podem levar até 48 horas para entrar em vigor.
Para configurar o HTTPS, devemos obter um certificado SSL na AWS e vinculá -lo ao endereço do domínio.




