HTML5 and CSS3
Define the structure and styling of the website. This static content is the application that gets packaged and deployed.
A practical demonstration of continuous integration and continuous deployment using GitHub Actions, Docker, Docker Hub, and AWS EC2.
Six connected stages take a change from a developer's editor to a running container on AWS EC2.
Write or update HTML and Dockerfile.
Push changes to the main branch.
Automatically checkout code, validate files, and build the Docker image.
Push the image only after a successful build.
Pull the latest image and replace the running container.
Serve the updated website over HTTP on port 80.
Every push to the configured branch triggers the automated pipeline.
Each technology has one clear responsibility in the deployment process.
Define the structure and styling of the website. This static content is the application that gets packaged and deployed.
Packages the website and its web server into a container image that runs the same way on any machine with Docker installed.
Track every change to the code and host the repository. A push to the configured branch is what starts the pipeline.
Runs the workflow automatically: checks out the code, validates files, builds the image, pushes it, and triggers the deployment.
A container registry that stores the built image so the server can pull the latest version whenever a deployment runs.
A cloud virtual server that hosts the running container and makes the website reachable over HTTP on port 80.
The operating system on the EC2 instance. It runs the Docker engine and the commands that pull and start the new container.
A lightweight web server inside the container. It serves the static index.html file to visitors' browsers.
After the initial setup, a deployment needs nothing more than a push to GitHub.
Changes are committed and pushed to the configured branch on GitHub.
GitHub Actions builds and validates the Docker image.
The image is pushed to Docker Hub only if the build succeeds.
GitHub Actions connects securely to EC2, which pulls and runs the new image.
Automation turns releases from a manual checklist into a predictable process.
Each push runs the same workflow without anyone logging in to the server.
The same image runs in testing and in production, which avoids "works on my machine" surprises.
Changes reach the live site shortly after they are pushed, so feedback loops stay short.
Building, publishing, and restarting containers are handled by the pipeline instead of by hand.
Every release follows identical steps, which lowers the chance of missed commands or human error.
Workflow logs show which stage failed, and tagged images make it simple to compare or roll back versions.
Code moves left to right: source, build, registry, server, and finally the visitor's browser.
CloudDeploy is a static website built for a DevOps internship assignment. The page itself is the application: it is packaged into a Docker image with Nginx and deployed through an automated pipeline.
The goal is to demonstrate a practical, end-to-end CI/CD workflow rather than a complex application.
index.html, no build step