diff --git a/src/data/projects/automated-backups.md b/src/data/projects/automated-backups.md index e5167c8ef..645954b13 100644 --- a/src/data/projects/automated-backups.md +++ b/src/data/projects/automated-backups.md @@ -2,7 +2,7 @@ title: 'Automated DB Backups' description: 'Setup a scheduled workflow to backup a Database every 12 hours' isNew: false -sort: 15 +sort: 1600 difficulty: 'intermediate' nature: 'Backups' skills: diff --git a/src/data/projects/basic-dns.md b/src/data/projects/basic-dns.md index 8993692d1..56313e39e 100644 --- a/src/data/projects/basic-dns.md +++ b/src/data/projects/basic-dns.md @@ -2,7 +2,7 @@ title: 'Basic DNS Setup' description: 'Purchase a custom domain and set up basic DNS records.' isNew: false -sort: 6 +sort: 700 difficulty: 'beginner' nature: 'DNS' skills: diff --git a/src/data/projects/basic-dockerfile.md b/src/data/projects/basic-dockerfile.md index d0b9d7f08..e8fc65b49 100644 --- a/src/data/projects/basic-dockerfile.md +++ b/src/data/projects/basic-dockerfile.md @@ -2,7 +2,7 @@ title: 'Basic Dockerfile' description: 'Build a basic Dockerfile to create a Docker image.' isNew: false -sort: 9 +sort: 1000 difficulty: 'beginner' nature: 'Docker' skills: diff --git a/src/data/projects/blue-green-deployment.md b/src/data/projects/blue-green-deployment.md index 222917273..2f02524ba 100644 --- a/src/data/projects/blue-green-deployment.md +++ b/src/data/projects/blue-green-deployment.md @@ -2,7 +2,7 @@ title: 'Blue-Green Deployment' description: 'Setup a blue-green deployment strategy for your application.' isNew: false -sort: 20 +sort: 1700 difficulty: 'advanced' nature: 'DevOps' skills: diff --git a/src/data/projects/configuration-management.md b/src/data/projects/configuration-management.md index 895ada1cd..22b50b454 100644 --- a/src/data/projects/configuration-management.md +++ b/src/data/projects/configuration-management.md @@ -2,7 +2,7 @@ title: 'Configuration Management' description: 'Write an Ansible playbook to configure a Linux server.' isNew: false -sort: 10 +sort: 1100 difficulty: 'intermediate' nature: 'Ansible' skills: diff --git a/src/data/projects/dockerized-service-deployment.md b/src/data/projects/dockerized-service-deployment.md index a46e235c3..ca1ca0927 100644 --- a/src/data/projects/dockerized-service-deployment.md +++ b/src/data/projects/dockerized-service-deployment.md @@ -2,7 +2,7 @@ title: 'Dockerized Service' description: 'Use GitHub Actions to Deploy a Dockerized Node.js Service' isNew: false -sort: 13 +sort: 1400 difficulty: 'intermediate' nature: 'Docker' skills: diff --git a/src/data/projects/dummy-systemd-service.md b/src/data/projects/dummy-systemd-service.md index 0fb620c75..b2c38a3fd 100644 --- a/src/data/projects/dummy-systemd-service.md +++ b/src/data/projects/dummy-systemd-service.md @@ -2,7 +2,7 @@ title: 'Dummy Systemd Service' description: 'Create a long-running systemd service that logs to a file.' isNew: false -sort: 8 +sort: 900 difficulty: 'beginner' nature: 'Systemd' skills: diff --git a/src/data/projects/github-actions-deployment-workflow.md b/src/data/projects/github-actions-deployment-workflow.md index 1aced3a92..9b79bca37 100644 --- a/src/data/projects/github-actions-deployment-workflow.md +++ b/src/data/projects/github-actions-deployment-workflow.md @@ -2,7 +2,7 @@ title: 'GitHub Pages Deployment' description: 'Write a simple GitHub Actions workflow to deploy a static website to GitHub Pages.' isNew: true -sort: 3 +sort: 400 difficulty: 'beginner' nature: 'CI / CD' skills: diff --git a/src/data/projects/iac-digitalocean.md b/src/data/projects/iac-digitalocean.md index 81b517641..71d55019a 100644 --- a/src/data/projects/iac-digitalocean.md +++ b/src/data/projects/iac-digitalocean.md @@ -2,7 +2,7 @@ title: 'IaC on DigitalOcean' description: 'Write Terraform code to create a Droplet on DigitalOcean' isNew: false -sort: 11 +sort: 1200 difficulty: 'intermediate' nature: 'Terraform' skills: diff --git a/src/data/projects/log-archive-tool.md b/src/data/projects/log-archive-tool.md index 84289b8a2..a755bf16a 100644 --- a/src/data/projects/log-archive-tool.md +++ b/src/data/projects/log-archive-tool.md @@ -2,7 +2,7 @@ title: 'Log Archive Tool' description: 'Build a tool to archive logs from the CLI with the date and time.' isNew: false -sort: 2 +sort: 200 difficulty: 'beginner' nature: 'CLI' skills: diff --git a/src/data/projects/monitoring.md b/src/data/projects/monitoring.md index e7c242378..63b896496 100644 --- a/src/data/projects/monitoring.md +++ b/src/data/projects/monitoring.md @@ -2,7 +2,7 @@ title: 'Prometheus and Grafana' description: 'Setup monitoring using Prometheus and visualize metrics in Grafana.' isNew: false -sort: 21 +sort: 1800 difficulty: 'advanced' nature: 'Monitoring' skills: diff --git a/src/data/projects/multi-container-service.md b/src/data/projects/multi-container-service.md index dcbd2578e..3af526689 100644 --- a/src/data/projects/multi-container-service.md +++ b/src/data/projects/multi-container-service.md @@ -2,7 +2,7 @@ title: 'Multi-Container Application' description: 'Use Docker Compose to run a multi-container application' isNew: false -sort: 14 +sort: 1500 difficulty: 'intermediate' nature: 'Docker Compose' skills: diff --git a/src/data/projects/multiservice-docker.md b/src/data/projects/multiservice-docker.md new file mode 100644 index 000000000..b128236fc --- /dev/null +++ b/src/data/projects/multiservice-docker.md @@ -0,0 +1,47 @@ +--- +title: 'Multi-Service Application' +description: 'Setup a multi-service optimized docker implementation' +isNew: false +sort: 1900 +difficulty: 'advanced' +nature: 'Docker' +skills: + - 'docker' + - 'docker-compose' +seo: + title: 'Multi-Service Docker' + description: 'Setup a multi-service optimized docker implementation' + keywords: + - 'Multi-Service Docker' + - 'Docker' +roadmapIds: + - 'devops' +--- + +The goal of this project is to help you practice a more advanced docker setup involving multiple services, volumes, networks, custom base images, multi-stage builds, secrets and more. The project will simulate a real-world scenario with multiple interconnected services, each with its own build requirements and optimizations. + +## Requirements + +Create a multi-service application using Docker that consists of the following components: + +- **Web Application**: A basic react-based frontend application. +- **API Service**: A Node.js Express backend API. +- **Database**: A MongoDB instance for storing application data. +- **Cache**: A Redis cache for improving performance. +- **Reverse Proxy**: An Nginx reverse proxy to handle incoming requests. + +Implement the following Docker features and best practices: + +- Use Docker Compose to define and run the multi-container application. +- Create custom base images for the web application and API service. +- Implement multi-stage builds for the web application to optimize the final image size. +- Set up a Docker network to allow communication between services. +- Use Docker volumes for persistent data storage (database and cache). +- Implement Docker secrets for sensitive information (e.g., database passwords). +- Configure health checks for each service. +- Optimize Dockerfiles for each service to reduce image sizes and improve build times. +- Implement logging and log rotation for all services. + +
+ +By completing this project, you'll gain hands-on experience with advanced Docker concepts and best practices in a realistic, multi-service environment. This will prepare you for working with complex containerized applications in production scenarios. diff --git a/src/data/projects/nginx-log-analyser.md b/src/data/projects/nginx-log-analyser.md index 7c2f910d1..b20db17ae 100644 --- a/src/data/projects/nginx-log-analyser.md +++ b/src/data/projects/nginx-log-analyser.md @@ -2,7 +2,7 @@ title: 'Nginx Log Analyser' description: 'Write a simple tool to analyze logs from the command line.' isNew: true -sort: 1 +sort: 300 difficulty: 'beginner' nature: 'CLI' skills: diff --git a/src/data/projects/nodejs-service-deployment.md b/src/data/projects/nodejs-service-deployment.md index 1b7490b01..c3de19ed9 100644 --- a/src/data/projects/nodejs-service-deployment.md +++ b/src/data/projects/nodejs-service-deployment.md @@ -2,7 +2,7 @@ title: 'Node.js Service Deployment' description: 'Use GitHub Actions to Deploy a Node.js Service to a remote server' isNew: false -sort: 12 +sort: 1300 difficulty: 'intermediate' nature: 'CI/CD' skills: diff --git a/src/data/projects/server-stats.md b/src/data/projects/server-stats.md index 53c525679..baf25f8b0 100644 --- a/src/data/projects/server-stats.md +++ b/src/data/projects/server-stats.md @@ -2,7 +2,7 @@ title: 'Server Performance Stats' description: 'Write a script to analyse basic server performance stats.' isNew: true -sort: 0 +sort: 100 difficulty: 'beginner' nature: 'CLI' skills: diff --git a/src/data/projects/service-discovery.md b/src/data/projects/service-discovery.md index 50cebec02..04c642cd6 100644 --- a/src/data/projects/service-discovery.md +++ b/src/data/projects/service-discovery.md @@ -2,7 +2,7 @@ title: 'Service Discovery' description: 'Setup service discovery with dummy services and Consul' isNew: false -sort: 21 +sort: 2000 difficulty: 'advanced' nature: 'DevOps' skills: diff --git a/src/data/projects/simple-monitoring-dashboard.md b/src/data/projects/simple-monitoring-dashboard.md index c98dd88dc..8259bbf69 100644 --- a/src/data/projects/simple-monitoring-dashboard.md +++ b/src/data/projects/simple-monitoring-dashboard.md @@ -2,7 +2,7 @@ title: 'Simple Monitoring' description: 'Set up a basic monitoring dashboard using Netdata.' isNew: false -sort: 7 +sort: 800 difficulty: 'beginner' nature: 'Monitoring' skills: diff --git a/src/data/projects/ssh-remote-server-setup.md b/src/data/projects/ssh-remote-server-setup.md index 287e2b516..7f8e95f50 100644 --- a/src/data/projects/ssh-remote-server-setup.md +++ b/src/data/projects/ssh-remote-server-setup.md @@ -2,7 +2,7 @@ title: 'SSH Remote Server Setup' description: 'Setup a basic remote linux server and configure it to allow SSH.' isNew: false -sort: 4 +sort: 500 difficulty: 'beginner' nature: 'SSH' skills: diff --git a/src/data/projects/static-site-server.md b/src/data/projects/static-site-server.md index c57009867..2871f4d61 100644 --- a/src/data/projects/static-site-server.md +++ b/src/data/projects/static-site-server.md @@ -2,7 +2,7 @@ title: 'Static Site Server' description: 'Setup a basic linux server and configure it to serve a static site.' isNew: false -sort: 5 +sort: 600 difficulty: 'beginner' nature: 'Nginx' skills: