Elena' s AI Blog

MLOps & Deployment Series

Elena Daehnhardt

Midjourney AI-generated art
Image credit: Illustration created with Midjourney, prompt by the author.
Image prompt

“An illustration representing cloud computing”

MLOps & Deployment

This series covers the deployment side of building with AI — Docker and Docker Compose, CI/CD, cross-platform runtimes, and the infrastructure plumbing that moves a project from localhost to a running service.

Series Progress

5 of 5 posts published


All Posts in This Series

Part 1: My Docker Needed Some TLC

A practical Docker troubleshooting guide for macOS: stalled BuildKit, cache pressure, startup failures, and safe recovery steps.

My Docker Needed Some TLC

Part 2: Docker Permissions Without Panic: Why I Ran chown Inside My Container

Why a Flask container throws Permission denied when it runs as a non-root user, and how to fix ownership properly with chown instead of chmod 777.

Docker Permissions Without Panic: Why I Ran chown Inside My Container

Part 4: From Localhost to Live

From localhost to production VPS: deploy Docker Compose with Nginx, TLS, firewall defaults, and operations checklists.

From Localhost to Live

Part 5: Caching Docker Compose Builds with BuildKit

A practical BuildKit guide for Docker Compose: cache mounts, Dockerfile ordering, and reproducible fast rebuilds.

Caching Docker Compose Builds with BuildKit

Part 7: Docker Compose CI/CD with GitHub Actions: A Reliable Flask Workflow

A complete Docker Compose CI/CD pipeline for a Flask app: test pull requests against real PostgreSQL, publish the tested image to GHCR, and deploy that exact digest to a VPS with rollback.

Docker Compose CI/CD with GitHub Actions: A Reliable Flask Workflow

Getting Started

New to this series? Start with Part 1: My Docker Needed Some TLC.

Each post builds on the previous one, so reading them in order is recommended. Each post also works on its own if you need to jump to a specific topic.

All Posts