NexaSoft
A responsive company site, containerized with Docker.
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.
From static files to a local container
Prepare the static site
HTML, CSS and JavaScript provide the responsive page.
Build the Docker image
nginx:alpine serves the copied website files.
Run the container
Map local port 8080 to Nginx port 80.
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
- Responsive one-page site with breakpoints from desktop down to 480px
- JavaScript for accordions, tabs, smooth scrolling and a header that changes on scroll
- Dockerfile based on nginx:alpine
- Image build, port mapping 8080:80 and container lifecycle
- Verified with docker ps and an HTTP 200 response via curl
- Documented EC2 deployment: SSH, Docker install, SCP transfer, --restart unless-stopped
- Security notes: restricted SSH, private key handling, HTTPS for production, image updates
Gallery
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.








