Docker 이미지 1.1GB → 130MB: 네 가지 방식으로 빌드해 단계별로 비교하기

같은 Node.js 앱을 단일 스테이지·dockerignore·멀티스테이지+Alpine·distroless 네 방식으로 빌드해 크기를 비교했습니다. 대부분의 감소가 어느 단계에서 일어나는지, Alpine의 musl 호환성 함정과 -slim 대안, –chown을 COPY에 붙여야 하는 이유, distroless 컨테이너 디버깅 방법까지 정리했습니다.

GitHub Actions vs Azure Pipelines: 기능이 아니라 상황으로 고르고, OIDC로 시크릿 없애기

둘 다 할 수 있는 게 거의 같아서 기능 비교로는 결론이 안 납니다. 코드 위치와 통제 요구로 가르는 기준표, 그리고 어느 쪽을 택하든 클라이언트 시크릿을 OIDC로 대체하는 전체 설정을 다룹니다. subject로 브랜치·환경까지 제한하는 법과 rollout status로 거짓 성공을 막는 법까지 포함했습니다.