Kubernetes Tutorial #12: Kubernetes Production Checklist

You have worked through all 12 articles in the Kubernetes series. Now it is time to go to production. This checklist covers everything you need to verify before your application is ready for real traffic. Each item links back to the tutorial where it is covered in depth. Going through this checklist before your first production deploy will save you from the most common production failures. Reliability Define resource requests and limits on every container Without requests, the Kubernetes scheduler cannot place Pods correctly. Without limits, one runaway container can OOM-kill an entire node. ...

July 21, 2026 · 7 min

Kubernetes Tutorial #9: CI/CD with Kubernetes and GitHub Actions

Deploying to Kubernetes manually is slow and error-prone. Every deploy requires building an image, pushing it to a registry, and updating the cluster. With CI/CD, all of that happens automatically on every push to your main branch. Write code, push to GitHub, and your new version is live in minutes — with zero-downtime rolling updates. This tutorial builds a complete pipeline with GitHub Actions. The Pipeline Overview Developer pushes code to main branch ↓ GitHub Actions triggers workflow ↓ Build Docker image ↓ Push image to registry (GHCR or Docker Hub) ↓ Deploy to Kubernetes (kubectl apply or helm upgrade) ↓ Wait for rollout to complete ↓ Done — new version is live Prerequisites A Kubernetes cluster (for this tutorial, we use a real cluster — not minikube). Options: k3s on a VPS, or any cloud provider. A GitHub repository with your app code and Kubernetes manifests Basic understanding of GitHub Actions (jobs, steps, secrets) Step 1: Prepare the Kubernetes Manifests Keep your Kubernetes YAML files in your repository, under a k8s/ directory: ...

July 18, 2026 · 7 min

Kubernetes Tutorial #1: What is Kubernetes? Architecture Overview

You have 10 containers running in production. One crashes at 2 AM. Another gets too much traffic and slows down. A third needs an update, but you cannot take the whole app offline. Who restarts the crashed container? Who routes traffic away from the slow one? Who handles the update without downtime? Kubernetes does all of that. Automatically. This is the first article in the Kubernetes section of our Docker & Kubernetes Tutorial series. If you are new to containers, start with Docker Tutorial #1: What is Docker? first. ...

July 10, 2026 · 7 min

Android Tutorial #18: CI/CD for Android — GitHub Actions + Fastlane

You push code. Tests run automatically. The App Bundle (AAB) is built and signed. It gets uploaded to the Play Store internal track. You never touch the build machine. This is CI/CD — Continuous Integration and Continuous Deployment. It saves hours of manual work and catches bugs before they reach users. In this tutorial, you will set up a complete CI/CD pipeline for your Android app using GitHub Actions and Fastlane. ...

July 9, 2026 · 8 min

Docker Cheat Sheet 2026 — All Commands in One Page

This is the complete Docker reference for 2026. All essential commands in one place. Versions covered: Docker Engine 29+, Docker Compose v2 (Compose Specification v5). Container Commands # Run a container docker run nginx # Run in detached mode (background) docker run -d nginx # Run interactively with a shell docker run -it ubuntu:24.04 bash # Run and remove when stopped docker run --rm nginx # Run with a name docker run --name mywebserver nginx # Run with port mapping (host:container) docker run -p 8080:80 nginx # Run with environment variables docker run -e APP_ENV=production myapp:1.0 # Run with environment file docker run --env-file .env myapp:1.0 # Run with volume docker run -v mydata:/data nginx # Run with bind mount docker run -v /host/path:/container/path nginx # Run with resource limits docker run --memory 512m --cpus 1.0 myapp:1.0 # Run as non-root user docker run --user 1001:1001 myapp:1.0 # Run with read-only filesystem docker run --read-only myapp:1.0 # Run with network docker run --network mynetwork myapp:1.0 # Run with restart policy docker run --restart unless-stopped nginx # List running containers docker ps # List all containers (including stopped) docker ps -a # Stop a container (SIGTERM) docker stop mywebserver # Kill a container (SIGKILL) docker kill mywebserver # Start a stopped container docker start mywebserver # Restart a container docker restart mywebserver # Remove a stopped container docker rm mywebserver # Force-remove a running container docker rm -f mywebserver # Remove all stopped containers docker container prune # View container logs docker logs mywebserver # Follow logs in real time docker logs -f mywebserver # Show last 50 lines docker logs --tail 50 mywebserver # Execute a command in a running container docker exec -it mywebserver bash # Copy files to/from a container docker cp mywebserver:/etc/nginx/nginx.conf ./nginx.conf docker cp ./nginx.conf mywebserver:/etc/nginx/nginx.conf # Inspect container details (JSON) docker inspect mywebserver # View real-time resource usage docker stats # View stats for one container docker stats mywebserver # View running processes inside a container docker top mywebserver Image Commands # Pull an image from Docker Hub docker pull nginx # Pull specific version docker pull nginx:1.27 # List local images docker images # Build an image from Dockerfile docker build -t myapp:1.0 . # Build from specific Dockerfile docker build -f Dockerfile.prod -t myapp:prod . # Build with build args docker build --build-arg APP_VERSION=2.0 -t myapp:2.0 . # Tag an image docker tag myapp:1.0 myapp:latest docker tag myapp:1.0 kemalcodes/myapp:1.0 # Push to Docker Hub docker push kemalcodes/myapp:1.0 # Remove an image docker rmi nginx # Remove all unused images docker image prune # Remove all unused images (including tagged but not referenced) docker image prune -a # View image history (layers) docker history nginx # Inspect image details (JSON) docker inspect nginx # Save image to tar file docker save myapp:1.0 -o myapp.tar # Load image from tar file docker load -i myapp.tar Volume Commands # Create a named volume docker volume create mydata # List all volumes docker volume ls # Inspect a volume docker volume inspect mydata # Remove a volume docker volume rm mydata # Remove all unused volumes docker volume prune Network Commands # List all networks docker network ls # Create a network docker network create mynetwork # Create with specific driver docker network create --driver bridge mynetwork # Inspect a network docker network inspect mynetwork # Connect a container to a network docker network connect mynetwork mycontainer # Disconnect a container from a network docker network disconnect mynetwork mycontainer # Remove a network docker network rm mynetwork # Remove all unused networks docker network prune Docker Compose Commands Always use docker compose (v2 plugin), not docker-compose (v1, deprecated). ...

June 26, 2026 · 7 min

Docker Tutorial #9: Docker Security Best Practices

Most beginner Docker setups have serious security problems. Containers running as root. Passwords in Dockerfiles. Outdated base images with known vulnerabilities. No resource limits. This tutorial covers the most important Docker security practices. You do not need to implement all of them at once. Start with the first three — they will fix the most critical issues. 1. Never Run Containers as Root By default, processes inside Docker containers run as root (UID 0). If an attacker exploits a vulnerability in your app, they have root access inside the container — and potentially a path to the host. ...

June 25, 2026 · 7 min

AI Code Review — Catch Bugs Before They Ship

AI-assisted commits now represent 41% of all commits globally. That is a lot of code that humans did not write line by line. The question is no longer whether to use AI for code — it is how to make sure that code is good. AI code review is one of the fastest-growing practices in 2026. Anthropic recently launched Code Review in Claude Code — a multi-agent system that reads your pull requests, understands the full codebase context, and posts review comments that focus on logic errors, not style nitpicks. ...

June 22, 2026 · 10 min

Docker Tutorial #1: What is Docker? Containers vs VMs Explained

Docker is the most popular containerization tool in the world. According to the 2025 Stack Overflow Developer Survey, Docker is one of the most widely used tools among professional developers, with usage continuing to grow year-over-year. But what is Docker? And how is it different from a virtual machine? In this tutorial, you will learn what Docker is, how containers work, and why developers use Docker for everything from local development to production deployments. ...

June 17, 2026 · 6 min

Docker Tutorial #5: Deploying with Docker — From Local to Production

In the previous tutorials, we learned how to build images, run containers, use Compose, and manage volumes and networks. Everything so far happened on your local computer. Now it is time to deploy. In this tutorial, you will learn how to move your application from your laptop to a production server. The Deployment Workflow Deploying with Docker follows a simple pattern: Build the image on your computer (or in CI/CD) Push the image to a registry Pull the image on the server Run the container on the server Your Computer Registry Server ┌──────────┐ ┌──────────────┐ ┌──────────┐ │ Build │────►│ Docker Hub │────►│ Pull │ │ Image │push │ or ghcr.io │pull │ & Run │ └──────────┘ └──────────────┘ └──────────┘ Docker Hub — The Default Registry Docker Hub is the default place to store and share images. It is free for public images and offers one private repository on the free plan. ...

June 14, 2026 · 9 min

How to Set Up Automated AI Code Reviews on GitHub (Step by Step)

Every pull request in your repo should be reviewed. But manual code reviews take time — often 2-4 hours per PR. And reviewers miss things when they are tired or rushed. AI code review tools read every PR automatically and leave comments in minutes. Not replacing human reviewers — augmenting them. The AI catches the obvious bugs, the human reviewer focuses on architecture and business logic. Here is how to set it up on GitHub. Three options — from easiest to most customizable. ...

April 11, 2026 · 7 min