可以在此處訪問此教程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證書,並將其鏈接到域地址。




