Skip to content

docker

The DevOps Odyssey: Fully Automating OCI App Deployment with Terraform, Ansible, and Docker

Introduction: The Engineer's Drive for Automation

As a DevOps engineer, I thrive on full‑stack automation—turning repetitive, error‑prone deployments into push‑button, ultra‑reliable workflows.
I recently challenged myself to get Job Winner, an opensource full‑stack app (Spring Boot + React), live on Oracle Cloud Infrastructure (OCI) in less than 15 minutes from a cold start.
But the real goal wasn't speed alone—it was idempotence: every run of the pipeline should converge the system to the exact same, secure, HTTPS‑enabled state without manual touch‑points.

OCI, Terraform, Ansible

Goodbye Nginx, Hello Traefik! Effortless HTTPS with Let's Encrypt and Docker

If you've struggled with Nginx reverse proxy configs, certbot timers, and nginx -s reload, it's time to meet Traefik — a modern reverse proxy built for dynamic containerized environments.

Why Traefik over Nginx?

Unlike Nginx, which requires manual configuration updates and reloads, Traefik auto-discovers services via Docker labels, keeping your proxy config in sync with running containers. It also:

  • Automatically obtains and renews Let’s Encrypt certificates
  • Handles HTTP/HTTPS routing, path-based rules, load balancing, and more
  • Supports metrics, tracing, and even canary deployments with Traefik Enterprise

For small setups or demos, it’s a powerful, drop-in Nginx replacement — with less boilerplate.

Traefik vs Nginx

Test Redis with Generated Data

Recently I need to test out Redis integration with a Ruby on Rails application. I wanted to test how fast Redis is with 1GB of data.

Instead of manually generating dummy data, I recalled using the Faker library a couple of years ago during my time as a full-stack developer.

React and Ruby Docker Development Environment

Background

Lately I am working on a project to dockerize an e2e application with React as the front end and Ruby on Rails as the backend. I would like to set up a docker-compose file so that:

  1. user can bring up the e2e environment with a single command
  2. the environment supports hot reload of code for both the React and Ruby on Rails parts
  3. it can be served as a testing environment for e2e test
  4. developers can run manual test in a local environment

Dev Container

Background

Since my first job after college graduation, I have been looking for a way to setup a portable development environment for the following reasons:

  1. to use it on multiple machines
  2. to share it among the team with teammates who doesn't have server/platform/os experience
  3. to standardize os, programming language and library version, etc
  4. to save myself the headache of rebuilding everything from scratch