피드로 돌아가기
Dev.toDevOps
원문 읽기
Multi-Stage Build 통한 PHP 8.4-FPM 이미지 최적화 및 보안 강화
Docker Image with Multi-Stage Builds & Docker Images Optimization
AI 요약
Context
단일 단계 Dockerfile 기반 이미지 빌드 시 컴파일러 및 헤더 파일 등 빌드 종속성이 잔존하는 구조. 이로 인해 이미지 크기 비대화와 공격 표면(Attack Surface) 확대로 인한 보안 취약점 발생.
Technical Solution
- Builder와 Production 단계 분리를 통한 런타임 필수 아티팩트만 추출하는 Multi-Stage Build 설계
- install-php-extensions 도구를 활용한 OS 레벨 빌드 종속성 자동 설치 및 컴파일 후 즉시 제거
- compiled .so 파일과 .ini 설정값만 Production 단계로 복사하여 이미지 레이어 최소화
- OPcache의 validate_timestamps=0 설정을 통한 파일 시스템 체크 생략 및 런타임 성능 최적화
- Non-root 사용자(appuser) 생성 및 보안 하드닝 설정을 통한 컨테이너 런타임 권한 제한
- .dockerignore 파일 적용을 통한 빌드 컨텍스트 최적화 및 불필요한 파일 유입 차단
실천 포인트
- 빌드 단계와 실행 단계를 완전히 분리하여 이미지 크기 및 보안 위험 감소 - 런타임 공유 라이브러리 누락 시 ldd 명령어를 통한 종속성 추적 및 추가 - Production 환경에서 OPcache 튜닝 및 PHP 보안 설정(expose_php=Off 등) 적용 - 컨테이너 내 root 권한 실행 배제로 런타임 침해 사고 시 피해 범위 최소화