From a54ea277b2d7fa9f530ea69d8ce4892aa87cb650 Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Tue, 19 Aug 2025 13:42:50 +0530 Subject: [PATCH 01/13] Added buildspec.yml for CodePipeline --- buildspec.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 buildspec.yml diff --git a/buildspec.yml b/buildspec.yml new file mode 100644 index 0000000..e69de29 From d71425d2b7c03bc9f9f106c3e73afcb88d367f8a Mon Sep 17 00:00:00 2001 From: Karthik2543 Date: Tue, 19 Aug 2025 13:54:31 +0530 Subject: [PATCH 02/13] Update buildspec.yml --- buildspec.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/buildspec.yml b/buildspec.yml index e69de29..5d05a28 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -0,0 +1,27 @@ +version: 0.2 +phases: + pre_build: + commands: + — echo Logging in to Amazon ECR… + — aws — version + — $(aws ecr get-login — region $AWS_DEFAULT_REGION — no-include-email) + — REPOSITORY_URI=‘‘ECR REPO URL’’ + — COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1–7) + — IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F”:” ‘{print $2}’) + build: + commands: + — echo Build started on `date` + — echo Building the Docker image… + — docker build -t $REPOSITORY_URI:latest . + — docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG + post_build: + commands: + — echo Build completed on `date` + — echo Pushing the Docker images… + — docker push $REPOSITORY_URI:latest + — docker push $REPOSITORY_URI:$IMAGE_TAG + — echo Writing image definitions file… + — printf ‘[{“name”:”CONTAINER-NAME”,”imageUri”:”%s”}]’ $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json + — cat imagedefinitions.json +artifacts: + files: imagedefinitions.json From ad60767b5e7ed7ce6aa67635c60ae48e9b9ccfd7 Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Tue, 19 Aug 2025 15:51:08 +0530 Subject: [PATCH 03/13] Added Dockerfile for Node.js app --- Dockerfile | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e7d5df5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM node:alpine + +WORKDIR /nodejs-docker-aws-ecs + +COPY package.json . + +RUN npm install + +COPY . . + +EXPOSE 3000 + +CMD [ "node", "app.js" ] \ No newline at end of file From ff1d7d14be048e3b52d306c5d913c8d5b47ae6da Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Tue, 19 Aug 2025 15:59:27 +0530 Subject: [PATCH 04/13] Added Dockerfile for Node.js app --- index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 0000000..e69de29 From d0d262c8a0d63544608ba892a226c89c4311f0ff Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Wed, 20 Aug 2025 13:42:41 +0530 Subject: [PATCH 05/13] Updated Node.js app and Dockerfile --- buildspec.yml | 27 --------------------------- index.html | 0 2 files changed, 27 deletions(-) delete mode 100644 buildspec.yml delete mode 100644 index.html diff --git a/buildspec.yml b/buildspec.yml deleted file mode 100644 index 5d05a28..0000000 --- a/buildspec.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: 0.2 -phases: - pre_build: - commands: - — echo Logging in to Amazon ECR… - — aws — version - — $(aws ecr get-login — region $AWS_DEFAULT_REGION — no-include-email) - — REPOSITORY_URI=‘‘ECR REPO URL’’ - — COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1–7) - — IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F”:” ‘{print $2}’) - build: - commands: - — echo Build started on `date` - — echo Building the Docker image… - — docker build -t $REPOSITORY_URI:latest . - — docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG - post_build: - commands: - — echo Build completed on `date` - — echo Pushing the Docker images… - — docker push $REPOSITORY_URI:latest - — docker push $REPOSITORY_URI:$IMAGE_TAG - — echo Writing image definitions file… - — printf ‘[{“name”:”CONTAINER-NAME”,”imageUri”:”%s”}]’ $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json - — cat imagedefinitions.json -artifacts: - files: imagedefinitions.json diff --git a/index.html b/index.html deleted file mode 100644 index e69de29..0000000 From 017cc7da11cd408db0dfc44a1c7bfc5eed99f31e Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Wed, 20 Aug 2025 15:24:18 +0530 Subject: [PATCH 06/13] Test change --- app.js | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/app.js b/app.js index 9114100..34d3f01 100644 --- a/app.js +++ b/app.js @@ -1,25 +1,11 @@ -const express = require('express'); +const express = require("express"); const app = express(); -const hostname = '127.0.0.1'; // Your server ip address -const port = 3000; -const version = '1.0.0'; +app.get("/", (req, res) => { + res.send("Hello from Node.js on ECS Fargate!"); +}); -app.get('/', (req, res) => { - // set response content - res.send(` - -

[Version ${version}]: This is AMAZING!!! Like & Subscribe!

-
- -
- - `); - - console.log(`[Version ${version}]: New request => http://${hostname}:${port}`+req.url); +app.listen(3000, "0.0.0.0", () => { + console.log("Server running on port 3000"); +}); -}) - -app.listen(port, () => { - console.log(`[Version ${version}]: Server running at http://${hostname}:${port}/`); -}) From 528a4323a23a89e01cb2484b7bbcc27ca3a2d09f Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Wed, 20 Aug 2025 21:09:39 +0530 Subject: [PATCH 07/13] Add package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d8cadc4..472e3e9 100644 --- a/package.json +++ b/package.json @@ -31,4 +31,4 @@ "dependencies": { "express": "^4.18.2" } -} +} \ No newline at end of file From dd9ebdd1a0aa9cc86f4a96fa2c9028b9593f6bfb Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Thu, 21 Aug 2025 16:49:09 +0530 Subject: [PATCH 08/13] Updated app.js for ECS Fargate - port 3000 --- app.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index 34d3f01..29a5ca6 100644 --- a/app.js +++ b/app.js @@ -1,11 +1,20 @@ const express = require("express"); const app = express(); +// Health check route for ECS +app.get("/health", (req, res) => { + res.status(200).send("OK"); +}); + +// Root route app.get("/", (req, res) => { - res.send("Hello from Node.js on ECS Fargate!"); + res.send("Hello from Node.js running on ECS (port 3000)!"); }); -app.listen(3000, "0.0.0.0", () => { - console.log("Server running on port 3000"); +// Start server +const PORT = process.env.PORT || 3000; +app.listen(PORT, "0.0.0.0", () => { + console.log(`🚀 Server running on http://0.0.0.0:${PORT}`); }); + From 969936c6d1f3b8d5388b9b4549dbca9efbb1aa6c Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Thu, 21 Aug 2025 17:00:28 +0530 Subject: [PATCH 09/13] Updated app.js for ECS EC2 - port 3000 --- app.js | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/app.js b/app.js index 29a5ca6..db92da8 100644 --- a/app.js +++ b/app.js @@ -1,20 +1,10 @@ const express = require("express"); const app = express(); -// Health check route for ECS -app.get("/health", (req, res) => { - res.status(200).send("OK"); -}); - -// Root route app.get("/", (req, res) => { - res.send("Hello from Node.js running on ECS (port 3000)!"); + res.send("Hello from Node.js on ECS EC2!"); }); -// Start server -const PORT = process.env.PORT || 3000; -app.listen(PORT, "0.0.0.0", () => { - console.log(`🚀 Server running on http://0.0.0.0:${PORT}`); +app.listen(3000, "0.0.0.0", () => { + console.log("Server running on port 3000"); }); - - From 999ef0d60728ae51f17076ce2a0a184f86a2f74a Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Fri, 22 Aug 2025 12:14:35 +0530 Subject: [PATCH 10/13] Update package.json with start script and express dependency --- package.json | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 472e3e9..fb6f46f 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,11 @@ { - "name": "nodejs-ssl-server", + "name": "my-node-app", "version": "1.0.0", - "description": "Show you how to deploy nodejs server on AWS EC2 Ubuntu server with Free SSL and Nginx", "main": "app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node app.js" }, - "repository": { - "type": "git", - "url": "git+https://github.com/saasscaleup/nodejs-ssl-server.git" - }, - "keywords": [ - "nodejs", - "AWS", - "EC@", - "instanace", - "Free", - "SSL", - "Nginx", - "Reverse", - "Proxy", - "Expressjs" - ], - "author": "Scale-Up SaaS", - "license": "MIT", - "bugs": { - "url": "https://github.com/saasscaleup/nodejs-ssl-server/issues" - }, - "homepage": "https://github.com/saasscaleup/nodejs-ssl-server#readme", "dependencies": { "express": "^4.18.2" } -} \ No newline at end of file +} From d02b20a8250b96a8af71b77dbd2373fdcf02bde3 Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Fri, 22 Aug 2025 13:28:35 +0530 Subject: [PATCH 11/13] Updated app.js for ECS deployment --- app.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index db92da8..fc0a6e7 100644 --- a/app.js +++ b/app.js @@ -1,10 +1,18 @@ const express = require("express"); const app = express(); +// Health check route for ECS +app.get("/health", (req, res) => { + res.status(200).send("OK"); +}); + +// Root route app.get("/", (req, res) => { - res.send("Hello from Node.js on ECS EC2!"); + res.send("Hello from Node.js running on ECS EC2 (port 3000)!"); }); -app.listen(3000, "0.0.0.0", () => { - console.log("Server running on port 3000"); +// Start server +const PORT = process.env.PORT || 3000; +app.listen(PORT, "0.0.0.0", () => { + console.log(`🚀 Server running on http://0.0.0.0:${PORT}`); }); From 86e27bd2add062ae7df82daf2cfda31b3ac361fe Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Fri, 22 Aug 2025 13:44:05 +0530 Subject: [PATCH 12/13] Added/Updated Dockerfile and app.j --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fb6f46f..3999621 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "my-node-app", + "name": "ecs-ec2-nodejs", "version": "1.0.0", "main": "app.js", "scripts": { @@ -9,3 +9,4 @@ "express": "^4.18.2" } } + From 0d05db909ddfe94cff76d781ffee7cb2e50ced24 Mon Sep 17 00:00:00 2001 From: Karthikeyan Annamalai Date: Fri, 22 Aug 2025 15:22:03 +0530 Subject: [PATCH 13/13] Added/Updated Dockerfile and package.json --- Dockerfile | 10 +++++----- package.json | 30 ++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index e7d5df5..2d4a509 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,13 @@ -FROM node:alpine +FROM node:18-alpine -WORKDIR /nodejs-docker-aws-ecs +WORKDIR /usr/src/app -COPY package.json . +COPY package*.json ./ -RUN npm install +RUN npm install --only=production COPY . . EXPOSE 3000 -CMD [ "node", "app.js" ] \ No newline at end of file +CMD ["node", "app.js"] diff --git a/package.json b/package.json index 3999621..472e3e9 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,34 @@ { - "name": "ecs-ec2-nodejs", + "name": "nodejs-ssl-server", "version": "1.0.0", + "description": "Show you how to deploy nodejs server on AWS EC2 Ubuntu server with Free SSL and Nginx", "main": "app.js", "scripts": { - "start": "node app.js" + "test": "echo \"Error: no test specified\" && exit 1" }, + "repository": { + "type": "git", + "url": "git+https://github.com/saasscaleup/nodejs-ssl-server.git" + }, + "keywords": [ + "nodejs", + "AWS", + "EC@", + "instanace", + "Free", + "SSL", + "Nginx", + "Reverse", + "Proxy", + "Expressjs" + ], + "author": "Scale-Up SaaS", + "license": "MIT", + "bugs": { + "url": "https://github.com/saasscaleup/nodejs-ssl-server/issues" + }, + "homepage": "https://github.com/saasscaleup/nodejs-ssl-server#readme", "dependencies": { "express": "^4.18.2" } -} - +} \ No newline at end of file