Это приложение для учебного node.js можно получить здесь.
Это веб -приложение Node - это веб -приложение React, обслуживаемое Express. Он станет докеризованным, а затем опубликовано на AWS Elastic Beanstalk.
Во-первых, создайте приложение React под названием «My-App» и перейдите в папку:
npx create-react-app my-app
cd my-app
Затем установите и сохраните экспресс:
npm install express --save
После завершения вышеуказанных шагов вы можете запустить приложение React в режиме разработки: npm run start
Создайте файл 'server.js' следующим образом и сохраните его в папке Project Root:
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}`);
В файле package.json добавить:
"proxy": "http://localhost:8080"
После завершения вышеуказанных шагов вы можете запустить настройку в приложении React:
npm run build
и запустить Express, чтобы обслуживать приложение React:
node server.js
Чтобы использовать Docker, зарегистрируйтесь на Docker и по мере необходимости установите Docker и/или Docker Desktop. После завершения установки Docker создать файл с именем «Dockerfile», работая:
touch Dockerfile
В DockerFile укажите изображение, на котором вы хотите построить. Последний номер изображения для приложения node.js доступен в центре Docker.
FROM node:14
Далее создайте рабочий каталог вашего приложения:
WORKDIR /usr/src/app
Затем скопируйте свой Package.json и установите зависимости, добавив следующие строки:
COPY package*.json ./
RUN npm install
Чтобы объединить исходный код в вашем приложении, добавьте:
COPY . .
Ваше приложение работает на порту 8080, поэтому добавьте эту строку:
EXPOSE 8080
Завершите указать команду для запуска вашего приложения:
CMD [ "node", "server.js" ]
Полный DockerFile должен выглядеть так:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
Создайте файл .dockerignore и добавьте строки следующим образом: node_modules npm-debug.log Это предотвратит копирование локальных модулей узлов и журналов отладки в изображение Docker. Скриншот .dockerignore: 
Чтобы построить изображение Docker, запустите следующую команду:
docker build -t <your username>/<your app name> .
Чтобы запустить встроенное изображение на порту 49160, запустите:
docker run -p 49160:8080 -d <your username>/<your app name>
Флаг -p -флаг перенаправляет публичный порт в частный порт внутри контейнера.
Чтобы подтвердить, что изображение работает, запустите:
docker ps
Чтобы развернуть удаленное изображение Docker в AWS Elastic Beanstalk, нажмите изображение в Docker Hub:
docker push <your username>/<your app name>:latest
Узнать больше
Для справки, node.js опубликовал руководство о том, как сделать приложение Node.js здесь.
Если вы раньше не использовали AWS Elastic Beanstalk, вы можете начать, прочитав документы.
Создайте файл dockerrun.aws.json следующим образом:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "your-docker-username/repo-name",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
]
}
Это включает в себя информацию о удаленном изображении Docker, который должен вытащить эластичный бобовый стебель. Затем мы создадим приложение Elastic Beanstalk и загрузим этот файл.
Во -первых, чтобы настроить приложение на Elastic Beanstalk, перейдите на консоль Elastic Beanstalk -> и нажмите «Создать новое приложение».
Введите имя вашего приложения: 
Нажмите «Создать новую среду» для только что созданного приложения: 
Выберите «среда веб -сервера» для этого приложения: 
Для «платформы» выберите «Docker», а также филиал и версию платформы, как вам нравится.
Для «кода приложения» выберите «Загрузите свой код» и загрузите dockerrun.aws.json, что вы только что создали: 

Перейдите на «Настроить больше параметров» и выберите предустановленную конфигурацию или создайте конфигурацию, которая содержит балансировщик нагрузки. 
Приложение будет создано через мгновение и будет развернуто по адресу Elasticbeanstalk: 
Узнать больше
Для справки, у AWS есть документации по развертыванию контейнера Docker на AWS Elastic Beanstalk.
Вы можете приобрести доменную адрес на любой платформе, как вам нравится. Этот пример продемонстрирует, как подключить ваше развернутое приложение с адресом, приобретенным у доменов Google.
Во -первых, выберите доменное имя, которое вам нравится, и приобретите его.
Адрес домена будет отображаться в вашей учетной записи Google Domains после покупки. Перейдите в «DNS» в левом меню и прокрутите «Пользовательские записи ресурсов»
Добавьте запись CNAME, вставьте свой адрес приложения Elastic Beanstalk как «данные» и «www» как «имя»: 
Мы также должны добавить пользовательские серверы имен на странице «DNS». Мы сделаем это в разделе «Серверы имен». 
Согласно AWS, «размещенная зона сообщает маршруту 53, как ответить на запросы DNS для домена». Давайте сначала создадим размещенную зону на AWS Route 53.
Перейдите к маршруту 53 в консоли AWS, а затем на «размещенные зоны».
Нажмите на «Создать хостированную зону» и введите только что приобретенный адрес домена: 
Будет создана хост -зона: 
Скопируйте «значения», перечисленные для типа «ns» один на один на «пользовательские серверы» в доменах Google: 
Обратите внимание , что изменения в доменах Google могут занять до 48 часов, чтобы вступить в силу.
Чтобы настроить HTTPS, мы должны получить сертификат SSL на AWS и связать его с доменным адресом.




