In this step-by-step guide, I'll walk you through the entire process of deploying a Node.js application in ECS Fargate with CodeCatalyst as CI/CD tool and Terraform as IaC. From setting up your environment to configuring your containers and services, we'll cover everything you need to know to get your application up and running in no time. So whether you're new to cloud deployment or just looking for a more streamlined process, this guide is for you. Let's get started!
Prerequisites
You will need the following :
- NPM to build and run the app locally
- Docker to build and test your image
- Terraform to create infrastructure in AWS
- AWS account + AWS Builder ID (for CodeCatalyst)
Note:
If you interested only in part of Creating CI/CD pipeline in CodeCatalyst please go to step # 4
Step 0 [Optional] Build and run app locally.
Feel free to skip if you already have existing node.js app.
Create the following files:
- src/app.js main app file in the src folder
- package.json that includes dependencies
// Import the express module const express = require('express'); // Create an instance of express const app = express(); // Define a port const port = 3000; // Define a route app.get('/', (req, res) => { res.send('Hello, World!'); }); // Start the server app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });
Now you can build and run your app locally
npm install npm run build npm test npm start
Step 1 - Containerize the app
Let's create Dockerfile
# Use an official Node.js runtime as a parent image FROM node:20-alpine # set the current mode ENV NODE_ENV=production # Set the working directory to /app WORKDIR /usr/src/app # Copy the application code to the container COPY --chown=node:node . . # Install the dependencies RUN npm ci --only=production # Expose the port that your application listens on EXPOSE 3000 USER node # Start the application CMD ["node", "src/app.js"]
Now you can run your app in Docker
docker build -t test:latest . docker run -p 3000:3000 test:latest
Step 3 - Create Infra
We are going to implement the following architecture using Terraform and open source modules.
First you will need to bootstrap your account:
- create S3 and DynamoDB table for Terraform State file
- create ECR
- create IAM roles and policies for CodeCatalyst
More details in the readme
Then IaC for app
Step 4 - create Pipeline
- create AWS Builder ID
- Log into CodeCatalyst and create new space and project
- Connect AWS accounts
- Create environments
Top comments (0)