☁️ 🏗️

클라우드/인프라 엔지니어가 되는 과정을 기록합니다.

Docker Compose 4

[14] "컨테이너가 갑자기 죽어버리면...?" - 자동 복구 설정하기 🛠️

Keyword : healthcheck, Actuator, restart policy, container, docker-compose, log 현재 홈서버는 시스템 재시작 시 컨테이너가 자동으로 복구되지 않는 문제가 있다.CI/CD와 파이프라인을 구축하기전에먼저 서버가 기본적으로 운영 가능한 상태인지 점검하고 개선했다. 문제 상황 - 시스템 재시작 시 컨테이너가 자동으로 안뜸 본격적인 홈서버 고도화 및 애플리케이션 운영을 위해오랜만에 노트북을 켜고 docker ps -a를 실행했다.CONTAINER ID IMAGE STATUS5233ec28cd4a nginx:alpine Exited (0) 2 weeks agof9e4d23011..

[9] "얼마까지 버티니?" - 모니터링 환경 구축 (Prometheus & Grafana) 📊

키워드 : 클라이언트/서버 관점, Grafana, Prometheus, Spring Actuator, Node Exporter, k6 [8]편에서 CloudAttend 애플리케이션이 홈서버에서 정상 동작하는 걸 확인했다.이제 한 가지 질문이 생겼다."이 서버가 얼마나 버틸 수 있을까?" 답을 내려면 먼저 "측정할 수 있는 환경"을 만들어야 한다.아래 아키텍처가 이번 편에서 완성할 그림이다. (1) HTTP 트래픽 흐름 : k6가 쏜 HTTP 요청이 공유기-> nginx -> backend로 흘러들어감.(2) 메트릭 수집 흐름 : Prometheus가 15초마다 backend(Spring Actuator)와 Node Exporter를 긁어가고, Grafana가 시각화함-> 즉 클라이언트 관점(k6)과 서버..

[8] "한 줄이면 뜰 줄 알았지...🤦‍♂️" - 5가지 배포 트러블슈팅

키워드 : Docker Network, SPA, CORS, localhost, DNS [7]편에서 Dockerfile, docker-compose.yml, nginx.conf를 모두 작성했다.이제 docker compose up --build 한 줄이면 뜰 것 같았는데...! 여러 에러들이 발생했다...이번 편은 실제 배포 과정에서 맞닥뜨린 에러 5개를 기록한다. 각각 왜 터졌는지 → 어떻게 고쳤는지 순서로 정리한다.📋 현재 상황 배포 완료 후 트래픽 흐름은 아래와 같다.외부 브라우저 ↓ HTTP :80공유기 (포트포워딩 80 → 갤북:80) ↓Galaxy Book (Ubuntu)└── Docker Compose (app-network) ├── nginx:alpine ←..

[7] 내 첫 앱 홈서버 상륙기 by Docker Compose 🚀

키워드 : Docker Compose, Container, Reverse Proxy 완성 아키텍처 🐳 Docker Compose를 쓰는 이유?[6]에서 Docker로 nginx를 컨테이너에 감싸 띄워봤다.이제 실제 애플리케이션을 배포하려고 한다.하지만 실제 서비스는 [6]의 실습처럼 하나의 컨테이너로 끝나지 않는다!Spring Boot 애플리케이션, Nginx, MySQL그리고 이후 모니터링을 위한 Prometheus, Grafana까지... 이때 하나의 컨테이너에는 하나의 프로세스만 담아야 한다.Docker의 핵심 철학 중 하나 단일 책임 원칙 때문덕분에 각 서비스를 독립적으로 관리하고, 교체하고, 스케일할 수 있다.하지만 컨테이너가 여러 개가 되는 순간 문제가 생긴다.각각을 docker run으..