Docker 컨테이너 DNS 설정 트러블슈팅 — 서비스 이름 해석 실패와 TTL 조정
Docker 컨테이너 DNS 설정 때문에 두 번 막혔다. default bridge에서 서비스 이름이 안 풀린 게 첫 번째, alpine 이미지에서 응답이 5초씩 느려진 게 두 번째였다.
Docker 컨테이너 DNS 설정 때문에 두 번 막혔다. default bridge에서 서비스 이름이 안 풀린 게 첫 번째, alpine 이미지에서 응답이 5초씩 느려진 게 두 번째였다.
TypeScript Express/Fastify 앱을 Kubernetes에 올릴 때 Alpine부터 잡는 게 흔한 선택이지만, native 모듈과 musl libc가 발목을 잡는다. node:20-slim과 V8 힙 분리로 OOMKilled를 잡은 실측 기반 구성을 정리한다.
React 앱을 클러스터에 올렸더니 이미지 1.2GB, 롤링 중 502 에러. 멀티스테이지 빌드와 readiness probe로 둘 다 잡은 기록이다.
depends_on만 쓰면 DB가 준비되기도 전에 API가 먼저 뜬다. Docker Compose 헬스체크 설정과 service_healthy 조건을 엮어 의존성 순서를 제대로 잡는 실무 방법을 정리한다.
OpenSSL 4.0.0이 나오자마자 스테이징에 올려봤다. 결과는 롤백이었다. 프론트엔드 출신 백엔드 개발자가 시스템 라이브러리 메이저 업그레이드에서 부딪힌 것들을 시간순으로 풀어본다.
OpenSSL 메이저 업그레이드는 라이브러리 하나가 아니라 디펜던시 체인 전체를 흔드는 작업이다. 4.0.0 프로덕션 적용 타이밍을 3.0 때의 시행착오를 기반으로 정리했다.
프론트엔드에서 백엔드로 넘어오고 나서 처음 맡은 컨테이너 보안 스캔 자동화. Trivy를 GitHub Actions에 붙이면서 겪은 시행착오와 최종 설정을 시간순으로 풀어본다.
Prometheus alerting rules 작성부터 Alertmanager Slack 웹훅 연동, group_wait·repeat_interval 튜닝, 라벨 기반 온콜 라우팅까지. 설정 파일 전문과 실제 에러 메시지 기반 트러블슈팅을 포함한다.
수동 배포 3개월 차에 터진 사고를 계기로 GitHub Actions CI/CD를 구축한 과정이다. YAML 문법 에러, 시크릿 설정 실수, Docker 빌드 캐시까지 실전에서 부딪힌 문제와 해결법을 기록했다.
FastAPI 프로젝트의 Docker 이미지가 1.2GB까지 불어났다. 멀티스테이지 빌드와 .dockerignore 설정으로 187MB까지 줄인 과정을 단계별로 정리했다. slim과 alpine 비교, 빌드 에러 대응 포함.