Skip to content

Full-stack DevOps learning app (React + Node.js + PostgreSQL) with Docker, Kubernetes, and OpenShift manifests. Includes update scripts, health checks, and rolling updates.

Notifications You must be signed in to change notification settings

Amine-LG/devops-cheatsheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevOps Cheatsheet

A simple cheatsheet app to store and revisit commands for Linux, Docker, Kubernetes, and OpenShift.
Full stack: React (Vite) + Node/Express + PostgreSQL.
Works locally, with Docker, Docker Compose, Kubernetes (Minikube), and OpenShift.

  • Default login: admin / admin123

  • Seed data: created on first DB start from backend/db/init.sql

  • Run all commands from the repo root

Prerequisites

  • Docker

  • For Kubernetes: Minikube + kubectl

  • For OpenShift: oc CLI + Developer Sandbox account

Note: Commands below use $PWD for volume mounts. On Windows/Mac the path syntax differs, adjust as needed. Tested on Rocky Linux 9.6

1) Local Dev (Host Node + Dockerized Postgres)

Start PostgreSQL (seeds on first run):

docker rm -f devops-pg 2>/dev/null || true
docker run -d --name devops-pg \
  -e POSTGRES_USER=devops_user \
  -e POSTGRES_PASSWORD=secure_password \
  -e POSTGRES_DB=devops_cheatsheet \
  -p 5432:5432 \
  -v devops_pgdata:/var/lib/postgresql/data \
  -v "$PWD/backend/db:/docker-entrypoint-initdb.d:ro" \
  postgres:16

Backend (terminal 1):

cd backend
cp -f .env.example .env   # uses DB_HOST=localhost
npm i
npm run dev               # http://localhost:5000

Frontend (terminal 2):

cd frontend
npm i
npm run dev               # http://localhost:5173

2) Docker (three containers on a user network)

# network
docker network create devops-net 2>/dev/null || true

# db
docker rm -f devops-pg 2>/dev/null || true
docker run -d --name devops-pg --network devops-net \
  -e POSTGRES_USER=devops_user \
  -e POSTGRES_PASSWORD=secure_password \
  -e POSTGRES_DB=devops_cheatsheet \
  -v devops_pgdata:/var/lib/postgresql/data \
  -v "$PWD/backend/db:/docker-entrypoint-initdb.d:ro" \
  postgres:16

# backend
docker rm -f devops-backend 2>/dev/null || true
docker build -t devops-backend:local ./backend
docker run -d --name devops-backend --network devops-net \
  -e PORT=5000 \
  -e DB_HOST=devops-pg \
  -e DB_PORT=5432 \
  -e DB_USER=devops_user \
  -e DB_PASSWORD=secure_password \
  -e DB_NAME=devops_cheatsheet \
  -e JWT_SECRET=change_me_in_production \
  -p 5000:5000 \
  devops-backend:local

# frontend (nginx proxies /api -> http://devops-backend:5000)
docker rm -f devops-frontend 2>/dev/null || true
docker build -t devops-frontend:local ./frontend
docker run -d --name devops-frontend --network devops-net \
  -p 3000:8080 \
  devops-frontend:local

# open: http://localhost:3000

3) Docker Compose

cp -f backend/.env.example backend/.env   # compose overrides DB_HOST to devops_pg
docker compose up -d --build
# open: http://localhost

4) Kubernetes (Minikube)

minikube start --memory=2048 --cpus=2 --driver=docker
chmod +x k8s/deploy.sh
k8s/deploy.sh
  • The script prints how to access the app at the end (add the printed IP + devops.local to /etc/hosts, then open the URL).

  • If devops.local still doesn't work after adding the hosts entry:

minikube delete --purge
sudo systemctl restart docker
minikube start --memory=2048 --cpus=2 --driver=docker

5) OpenShift (Developer Sandbox)

Get your login token from the Developer Sandbox console, then:

oc login --token=YOUR_TOKEN --server=YOUR_SERVER
chmod +x oc/deploy.sh
oc/deploy.sh
  • The script prints the public Route URL at the end.

License

MIT

About

Full-stack DevOps learning app (React + Node.js + PostgreSQL) with Docker, Kubernetes, and OpenShift manifests. Includes update scripts, health checks, and rolling updates.

Topics

Resources

Stars

Watchers

Forks