This project demonstrates how I built a Mini Data Center using Docker, Docker Compose, and an Azure Ubuntu VM.
The setup replicates the functionality of a small-scale datacenter with essential services:
- Nginx (Web server)
- MySQL (Database)
- Nextcloud (File hosting platform)
- Grafana (Monitoring and visualization)
The goal was to gain hands-on experience with datacenter concepts, containerization, networking, and cloud deployment, while also building a portfolio project.
- I underwent one month of training in the Data Center domain.
- To apply what I learned, I explored containerization technologies such as Docker and Docker Compose.
- I experimented with different configurations on Docker Desktop (Windows).
- Some services failed to pull on Windows due to DNS/registry issues.
- To solve this, I deployed the setup on a Linux VM in Azure, which provided a native and more stable environment.
This transition not only fixed issues but also gave me exposure to cloud infrastructure.
- Azure account or you can use personal laptop to work on least minimum hardware resourse also it will work
- yaml file for docker-compose
Below is the architecture diagram of the Mini Data Center setup:
- Runs on port 8080.
- Hosts static web content from the
htmlfolder. - Demonstrates how web servers deliver applications inside a datacenter.
- Containerized MySQL 8 server.
- Configured with root password, user, and application database.
- Provides backend storage for applications like Nextcloud.
- Runs on port 8081.
- Provides cloud storage and collaboration platform.
- Connected to MySQL database for persistent storage.
- Simulates internal enterprise file sharing in a datacenter.
- Runs on port 3000.
- Provides monitoring dashboards.
- Can connect to multiple data sources (including MySQL).
- Essential for observing system health and metrics.
The entire setup is defined in a single docker-compose.yml file:
services:
web:
image: nginx:latest
container_name: web-server
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
networks:
- datacenter
db:
image: mysql:8
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: appdb
MYSQL_USER: appuser
MYSQL_PASSWORD: apppass
volumes:
- db_data:/var/lib/mysql
networks:
- datacenter
file:
image: nextcloud
container_name: nextcloud
ports:
- "8081:80"
volumes:
- nextcloud_data:/var/www/html
networks:
- datacenter
depends_on:
- db
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
networks:
- datacenter
volumes:
db_data:
nextcloud_data:
networks:
datacenter:
driver: bridge-
Provision an Azure VM
- Create Ubuntu Server VM on Azure.
- Assign a public IP.
- SSH into the VM.
-
Install Docker & Docker Compose
sudo apt update sudo apt install -y docker.io docker-compose sudo systemctl enable docker -
Copy project files
- Upload
docker-compose.ymlandhtml/directory to VM.
- Upload
-
Run the project
docker-compose up -d
-
Configure Firewall (UFW)
sudo ufw allow 8080 sudo ufw allow 8081 sudo ufw allow 3000 sudo ufw enable -
Access Services
http://<vm-ip>:8080→ Nginxhttp://<vm-ip>:8081→ Nextcloudhttp://<vm-ip>:3000→ Grafana
This project replicates the foundation of a real datacenter environment.
I have successfully demonstrated skills in containerization, networking, databases, cloud hosting, and monitoring.
Perfect as both a learning exercise and a portfolio project to showcase applied DevOps and datacenter knowledge.



