可以在此处访问此教程Node.js应用程序。
该节点Web应用程序是Express提供的React Web应用程序。它被停靠,然后在AWS Elastic Beanstalk上出版。
首先,创建一个名为“ my-app”的React应用程序,然后进入文件夹:
npx create-react-app my-app
cd my-app
然后,安装并保存Express:
npm install express --save
完成上述步骤后,您可以在开发模式下运行React应用程序: npm run start
创建如下的“ server.js”文件,然后将其保存在项目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 App上运行构建:
npm run build
并运行Express为React App服务:
node server.js
要使用Docker,请在Docker上注册,并根据需要安装Docker和/或Docker桌面。 Docker安装完成后,通过运行创建一个名为“ Dockerfile”的文件:
touch Dockerfile
在Dockerfile中,指定要构建的图像。 Node.js应用程序的最新图像编号可在Docker Hub上找到。
FROM node:14
接下来,创建应用程序的工作目录:
WORKDIR /usr/src/app
然后,复制您的软件包。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 image中。 .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弹性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"
}
]
}
这包括有关Elastic Beanstalk应该拉的远程Docker图像的信息。然后,我们将创建一个Elastic Beanstalk应用程序并上传此文件。
要在Elastic Beanstalk上设置您的应用程序,请首先转到Elastic Beanstalk控制台 - >应用程序,然后单击“创建新应用程序”。
输入您的应用程序名称: 
单击您刚创建的应用程序的“创建新环境”: 
为此应用选择“ Web服务器环境”: 
对于“平台”,请选择“ Docker”,以及您需要的平台分支和版本。
对于“应用程序代码”,请选择“上传代码”,然后上传Dockerrun.aws.json您刚创建: 

导航至“配置更多选项”,然后选择预设配置或创建包含负载平衡器的配置。 
该应用程序将稍后创建,并将部署在ElasticBeanstalk地址: 
了解更多
作为参考,AWS拥有有关在AWS Elastic Beanstalk上部署Docker容器的文档。
您可以根据需要在任何平台上购买域地址。此示例将演示如何将部署的应用与从Google域购买的地址连接。
首先,选择您喜欢的域名并购买。
购买后,域地址将在您的Google域帐户中显示。转到左菜单上的“ DNS”,然后滚动到“自定义资源记录”
添加一个cname记录,将弹性beanstalk应用地址放入“数据”中,而“ www”为“名称”: 
我们还需要在“ DNS”页面上添加自定义名称服务器。我们将在“名称服务器”部分中执行此操作。 
根据AWS的说法,“托管区域告诉53号公路如何回应DNS查询的域名”。让我们首先在AWS Route 53上创建一个托管区域。
导航到AWS控制台中的53号公路,然后到“托管区域”。
单击“创建托管区”,然后输入您刚购买的域地址: 
将创建一个托管区: 
在Google域中复制针对“ NS”类型的“ ns”列出的“值”: 
请注意,在Google域进行的更改可能需要长达48小时才能生效。
要设置HTTPS,我们应该在AWS上获得SSL证书,并将其链接到域地址。




