Add new project idea

pull/7430/head
Kamran Ahmed 2 months ago
parent 10dfd37d40
commit 44562b6a1e
  1. 2
      src/data/projects/automated-backups.md
  2. 2
      src/data/projects/basic-dns.md
  3. 2
      src/data/projects/basic-dockerfile.md
  4. 2
      src/data/projects/blue-green-deployment.md
  5. 2
      src/data/projects/configuration-management.md
  6. 2
      src/data/projects/dockerized-service-deployment.md
  7. 2
      src/data/projects/dummy-systemd-service.md
  8. 2
      src/data/projects/github-actions-deployment-workflow.md
  9. 2
      src/data/projects/iac-digitalocean.md
  10. 2
      src/data/projects/log-archive-tool.md
  11. 2
      src/data/projects/monitoring.md
  12. 2
      src/data/projects/multi-container-service.md
  13. 47
      src/data/projects/multiservice-docker.md
  14. 2
      src/data/projects/nginx-log-analyser.md
  15. 2
      src/data/projects/nodejs-service-deployment.md
  16. 2
      src/data/projects/server-stats.md
  17. 2
      src/data/projects/service-discovery.md
  18. 2
      src/data/projects/simple-monitoring-dashboard.md
  19. 2
      src/data/projects/ssh-remote-server-setup.md
  20. 2
      src/data/projects/static-site-server.md

@ -2,7 +2,7 @@
title: 'Automated DB Backups' title: 'Automated DB Backups'
description: 'Setup a scheduled workflow to backup a Database every 12 hours' description: 'Setup a scheduled workflow to backup a Database every 12 hours'
isNew: false isNew: false
sort: 15 sort: 1600
difficulty: 'intermediate' difficulty: 'intermediate'
nature: 'Backups' nature: 'Backups'
skills: skills:

@ -2,7 +2,7 @@
title: 'Basic DNS Setup' title: 'Basic DNS Setup'
description: 'Purchase a custom domain and set up basic DNS records.' description: 'Purchase a custom domain and set up basic DNS records.'
isNew: false isNew: false
sort: 6 sort: 700
difficulty: 'beginner' difficulty: 'beginner'
nature: 'DNS' nature: 'DNS'
skills: skills:

@ -2,7 +2,7 @@
title: 'Basic Dockerfile' title: 'Basic Dockerfile'
description: 'Build a basic Dockerfile to create a Docker image.' description: 'Build a basic Dockerfile to create a Docker image.'
isNew: false isNew: false
sort: 9 sort: 1000
difficulty: 'beginner' difficulty: 'beginner'
nature: 'Docker' nature: 'Docker'
skills: skills:

@ -2,7 +2,7 @@
title: 'Blue-Green Deployment' title: 'Blue-Green Deployment'
description: 'Setup a blue-green deployment strategy for your application.' description: 'Setup a blue-green deployment strategy for your application.'
isNew: false isNew: false
sort: 20 sort: 1700
difficulty: 'advanced' difficulty: 'advanced'
nature: 'DevOps' nature: 'DevOps'
skills: skills:

@ -2,7 +2,7 @@
title: 'Configuration Management' title: 'Configuration Management'
description: 'Write an Ansible playbook to configure a Linux server.' description: 'Write an Ansible playbook to configure a Linux server.'
isNew: false isNew: false
sort: 10 sort: 1100
difficulty: 'intermediate' difficulty: 'intermediate'
nature: 'Ansible' nature: 'Ansible'
skills: skills:

@ -2,7 +2,7 @@
title: 'Dockerized Service' title: 'Dockerized Service'
description: 'Use GitHub Actions to Deploy a Dockerized Node.js Service' description: 'Use GitHub Actions to Deploy a Dockerized Node.js Service'
isNew: false isNew: false
sort: 13 sort: 1400
difficulty: 'intermediate' difficulty: 'intermediate'
nature: 'Docker' nature: 'Docker'
skills: skills:

@ -2,7 +2,7 @@
title: 'Dummy Systemd Service' title: 'Dummy Systemd Service'
description: 'Create a long-running systemd service that logs to a file.' description: 'Create a long-running systemd service that logs to a file.'
isNew: false isNew: false
sort: 8 sort: 900
difficulty: 'beginner' difficulty: 'beginner'
nature: 'Systemd' nature: 'Systemd'
skills: skills:

@ -2,7 +2,7 @@
title: 'GitHub Pages Deployment' title: 'GitHub Pages Deployment'
description: 'Write a simple GitHub Actions workflow to deploy a static website to GitHub Pages.' description: 'Write a simple GitHub Actions workflow to deploy a static website to GitHub Pages.'
isNew: true isNew: true
sort: 3 sort: 400
difficulty: 'beginner' difficulty: 'beginner'
nature: 'CI / CD' nature: 'CI / CD'
skills: skills:

@ -2,7 +2,7 @@
title: 'IaC on DigitalOcean' title: 'IaC on DigitalOcean'
description: 'Write Terraform code to create a Droplet on DigitalOcean' description: 'Write Terraform code to create a Droplet on DigitalOcean'
isNew: false isNew: false
sort: 11 sort: 1200
difficulty: 'intermediate' difficulty: 'intermediate'
nature: 'Terraform' nature: 'Terraform'
skills: skills:

@ -2,7 +2,7 @@
title: 'Log Archive Tool' title: 'Log Archive Tool'
description: 'Build a tool to archive logs from the CLI with the date and time.' description: 'Build a tool to archive logs from the CLI with the date and time.'
isNew: false isNew: false
sort: 2 sort: 200
difficulty: 'beginner' difficulty: 'beginner'
nature: 'CLI' nature: 'CLI'
skills: skills:

@ -2,7 +2,7 @@
title: 'Prometheus and Grafana' title: 'Prometheus and Grafana'
description: 'Setup monitoring using Prometheus and visualize metrics in Grafana.' description: 'Setup monitoring using Prometheus and visualize metrics in Grafana.'
isNew: false isNew: false
sort: 21 sort: 1800
difficulty: 'advanced' difficulty: 'advanced'
nature: 'Monitoring' nature: 'Monitoring'
skills: skills:

@ -2,7 +2,7 @@
title: 'Multi-Container Application' title: 'Multi-Container Application'
description: 'Use Docker Compose to run a multi-container application' description: 'Use Docker Compose to run a multi-container application'
isNew: false isNew: false
sort: 14 sort: 1500
difficulty: 'intermediate' difficulty: 'intermediate'
nature: 'Docker Compose' nature: 'Docker Compose'
skills: skills:

@ -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.
<hr />
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.

@ -2,7 +2,7 @@
title: 'Nginx Log Analyser' title: 'Nginx Log Analyser'
description: 'Write a simple tool to analyze logs from the command line.' description: 'Write a simple tool to analyze logs from the command line.'
isNew: true isNew: true
sort: 1 sort: 300
difficulty: 'beginner' difficulty: 'beginner'
nature: 'CLI' nature: 'CLI'
skills: skills:

@ -2,7 +2,7 @@
title: 'Node.js Service Deployment' title: 'Node.js Service Deployment'
description: 'Use GitHub Actions to Deploy a Node.js Service to a remote server' description: 'Use GitHub Actions to Deploy a Node.js Service to a remote server'
isNew: false isNew: false
sort: 12 sort: 1300
difficulty: 'intermediate' difficulty: 'intermediate'
nature: 'CI/CD' nature: 'CI/CD'
skills: skills:

@ -2,7 +2,7 @@
title: 'Server Performance Stats' title: 'Server Performance Stats'
description: 'Write a script to analyse basic server performance stats.' description: 'Write a script to analyse basic server performance stats.'
isNew: true isNew: true
sort: 0 sort: 100
difficulty: 'beginner' difficulty: 'beginner'
nature: 'CLI' nature: 'CLI'
skills: skills:

@ -2,7 +2,7 @@
title: 'Service Discovery' title: 'Service Discovery'
description: 'Setup service discovery with dummy services and Consul' description: 'Setup service discovery with dummy services and Consul'
isNew: false isNew: false
sort: 21 sort: 2000
difficulty: 'advanced' difficulty: 'advanced'
nature: 'DevOps' nature: 'DevOps'
skills: skills:

@ -2,7 +2,7 @@
title: 'Simple Monitoring' title: 'Simple Monitoring'
description: 'Set up a basic monitoring dashboard using Netdata.' description: 'Set up a basic monitoring dashboard using Netdata.'
isNew: false isNew: false
sort: 7 sort: 800
difficulty: 'beginner' difficulty: 'beginner'
nature: 'Monitoring' nature: 'Monitoring'
skills: skills:

@ -2,7 +2,7 @@
title: 'SSH Remote Server Setup' title: 'SSH Remote Server Setup'
description: 'Setup a basic remote linux server and configure it to allow SSH.' description: 'Setup a basic remote linux server and configure it to allow SSH.'
isNew: false isNew: false
sort: 4 sort: 500
difficulty: 'beginner' difficulty: 'beginner'
nature: 'SSH' nature: 'SSH'
skills: skills:

@ -2,7 +2,7 @@
title: 'Static Site Server' title: 'Static Site Server'
description: 'Setup a basic linux server and configure it to serve a static site.' description: 'Setup a basic linux server and configure it to serve a static site.'
isNew: false isNew: false
sort: 5 sort: 600
difficulty: 'beginner' difficulty: 'beginner'
nature: 'Nginx' nature: 'Nginx'
skills: skills:

Loading…
Cancel
Save