Production Fixes
Real issues from real deployments. Each fix is tagged by tool so you can find what you need fast.
Container exits immediately after start
Container starts but exits within seconds. docker ps shows nothing.
Read fix →permission denied: /var/run/docker.sock
Running docker commands fails with permission denied on the socket.
Read fix →Docker build using stale cache after code change
Image rebuilds skip your code changes and serve old content.
Read fix →Container cannot reach host or other containers
App inside container fails to connect to localhost or sibling containers.
Read fix →Docker image is several GB — much larger than expected
Built image is 2-3x bigger than it needs to be.
Read fix →Environment variable not available inside container
App inside container cannot read env variables you set on the host.
Read fix →Data lost when container restarts
Uploads or database data disappear every time the container is recreated.
Read fix →Port is already in use when starting container
docker run fails because the host port is already bound.
Read fix →Pod stuck in CrashLoopBackOff
Pod keeps restarting and never reaches Running state.
Read fix →Pod stuck in ImagePullBackOff or ErrImagePull
Kubernetes cannot pull the container image.
Read fix →Service is not reachable inside the cluster
Pods cannot reach a Service by its DNS name or ClusterIP.
Read fix →Pod stuck in Pending — insufficient resources
Pod never schedules because no node has enough CPU or memory.
Read fix →Secret value is empty or unavailable in pod
Environment variable backed by a Secret is empty inside the container.
Read fix →Container killed with OOMKilled
Container keeps dying because it exceeds its memory limit.
Read fix →Ingress returns 404 or does not route traffic
Ingress is created but traffic hits 404 or goes to the wrong backend.
Read fix →Deployment update not rolling out — same old pods
You updated the image tag but pods still run the old version.
Read fix →Disk full — no space left on device
Server throws "no space left on device" but du shows plenty of space.
Read fix →kill command does not stop the process
Process keeps running after kill. Even kill -9 does not work.
Read fix →SSH: Permission denied (publickey)
SSH login fails with publickey error even with correct key.
Read fix →High CPU but no obvious process in top
Server is slow and CPU is high but top does not show the culprit.
Read fix →Cron job not running as expected
Cron entry looks correct but the job never runs.
Read fix →Port already in use — cannot start service
Service fails to start because another process holds the port.
Read fix →Permission denied even as root
Even with sudo you cannot write to a file.
Read fix →Load average is high but CPU usage is low
top shows load average of 20+ but CPUs are mostly idle.
Read fix →Nginx returns 502 Bad Gateway
Nginx is running but proxying to your app returns 502.
Read fix →Nginx fails to start: SSL cert file not found
nginx -t fails because cert paths in config do not exist yet.
Read fix →413 Request Entity Too Large on file upload
File uploads fail with 413 error.
Read fix →ERR_TOO_MANY_REDIRECTS — redirect loop
Browser shows too many redirects when hitting the site.
Read fix →nginx -t fails with cryptic emerg error
nginx config test throws emerg error and nginx will not reload.
Read fix →Connection refused on port 443 (HTTPS)
HTTP works but HTTPS gives connection refused.
Read fix →Nginx 504 Gateway Timeout
Slow requests result in 504 from nginx before the app responds.
Read fix →Static files return 404 through nginx
CSS, JS, or image files return 404 when served via nginx.
Read fix →Pipeline passes but production is broken
All CI tests go green but the deployed app crashes in production.
Read fix →CI builds are very slow — taking 15-20 minutes
Pipeline takes too long, blocking developer feedback.
Read fix →Secret accidentally printed in CI logs
A token or password appears in plain text in the pipeline output.
Read fix →Deployment causes downtime — requests drop during rollout
Every deployment causes a brief outage as the old container is replaced.
Read fix →Pipeline fails: environment variable not set
Build script errors because a required env var is undefined in CI.
Read fix →Stale branch causes pipeline failures not related to your change
Your PR fails tests that your change did not touch.
Read fix →docker push fails with authentication required in CI
Pipeline cannot push image to registry — auth error.
Read fix →Need to rollback but no previous version available
Production is broken but you cannot rollback because old image was overwritten.
Read fix →Cannot SSH into EC2 instance
SSH connection to EC2 times out or is refused.
Read fix →S3 returns 403 Access Denied
Reading or writing to S3 fails with 403 even though permissions look right.
Read fix →Application cannot connect to RDS
App gets connection timeout when connecting to RDS database.
Read fix →Lambda function times out
Lambda hits timeout limit and never completes the task.
Read fix →AWS assume role fails with AccessDenied
Cross-account or service assume-role call is denied.
Read fix →ALB returns 504 Gateway Timeout
Application Load Balancer returns 504 for slow requests.
Read fix →Logs not appearing in CloudWatch
Application logs not showing up in CloudWatch Log Groups.
Read fix →Unexpected high AWS bill from EC2
AWS bill is much higher than expected due to EC2 usage.
Read fix →Secret accidentally committed to Git
API key or password committed to the repo — need to remove it from history.
Read fix →Stuck in detached HEAD state
git status shows "HEAD detached" and commits seem to disappear.
Read fix →Merge conflict blocks PR merge
PR cannot be merged due to conflicts with the target branch.
Read fix →Need to undo a commit already pushed to main
Bad commit was merged to main — need to remove it without rewriting history.
Read fix →Push rejected: file too large
git push fails because a large file was committed.
Read fix →Committed to main instead of feature branch
Accidentally committed directly to main (or wrong branch).
Read fix →Branches have diverged — push rejected
git push rejected because remote has commits your local branch does not.
Read fix →Submodule directory is empty after git clone
After cloning a repo, submodule folders are empty.
Read fix →