Websites / Seminar project · Distributed Systems

NexaSoft

A responsive company site, containerized with Docker.

NexaSoft — project preview
DockerNginx AlpineHTML5CSS3JavaScriptAWS EC2

The challenge

Package a finished website so it runs the same way on any machine, without installing and configuring a web server by hand, and document how the same setup would move to a cloud server.

My contribution

Built NexaSoft, a demo website for a software development company, with a dark, responsive design and sections for services, selected work, careers, news and contact. HTML, CSS and JavaScript live in a single index.html, which keeps the container simple. I then containerized it with Docker on top of nginx:alpine, ran and tested it locally, and wrote a step-by-step plan for deploying the same image to AWS EC2, as a seminar project for the Distributed Systems course at FEIT.

How it works

The Dockerfile starts from the lightweight nginx:alpine image, copies index.html into the folder Nginx serves from, exposes port 80 and runs Nginx in the foreground so the container stays alive. Building it produces the nexasoft-site image. Running it as the nexasoft-web container maps port 8080 on the computer to port 80 inside the container, so the site opens at localhost:8080. A .dockerignore keeps Git files, archives and the README out of the image.

PROJECT FLOW / Deployment flow

From static files to a local container

  1. Prepare the static site

    HTML, CSS and JavaScript provide the responsive page.

  2. Build the Docker image

    nginx:alpine serves the copied website files.

  3. Run the container

    Map local port 8080 to Nginx port 80.

  4. Verify the local response

    Check the container and an HTTP 200 response.

AWS EC2 deployment is a documented next step, not a completed live deployment.

Testing & deployment plan

Locally, the image was checked with docker images, the running container with docker ps, and the full start, stop and restart cycle was tested. The site was verified in the browser and with curl -I, which returned HTTP 200 OK from Nginx. The EC2 plan covers launching an Ubuntu Server instance, a key pair for SSH, a security group that allows SSH only from the admin IP and HTTP on port 80, installing Docker, copying the files with SCP, and running the container on port 80 with a restart policy so it comes back after a reboot.

What it covers

Outcome

A website that starts with two commands on any machine with Docker, verified locally with a 200 OK response from Nginx, plus a complete, ready-to-follow plan for running it on AWS EC2.

Project scope

The site is static, with no backend or database, which is why a single Nginx container is enough. Containerization and local testing were carried out in full. The AWS EC2 part is documented as a deployment plan and was not run on a live cloud instance. For production, the plan calls for a domain and an HTTPS certificate instead of plain HTTP on a public IP.