ONBUILD
"하위 Dockerfile에서 자동으로 실행될 명령어를 상위 이미지에서 미리 설정”
개요
- 부모 이미지에서 설정한 명령어가 해당 이미지를 기반으로 빌드하는 하위 Dockerfile에서 자동 실행
- 주로 공통 빌드 로직이 필요한 템플릿 이미지나, 프레임워크 기반 베이스 이미지 제작에 유용
예시
베이스 이미지 (예: my-node-base)
# base-image/Dockerfile
FROM node:18
WORKDIR /app
ONBUILD COPY . /app
ONBUILD RUN npm install
- 이 이미지를 기반으로 하는 모든 하위 Dockerfile에서는,
- COPY . /app
- RUN npm install
- 이 두 명령이 자동으로 실행
하위 이미지
# app/Dockerfile
FROM my-node-base
CMD ["npm", "start"]
- COPY, RUN을 직접 작성하지 않아도 자동 실행됨.
- ✅ 하위 이미지에서 실수로 누락하거나 일관성 잃는 일 방지.
주의사항
항목 설명
| 🔁 중복 실행 금지 | ONBUILD는 명령어 1회성 실행이며, 하위 Dockerfile에서 명시하면 중복 실행되지는 않음 |
| 🧱 이미지 재사용 주의 | 하위 이미지가 많아질 경우, 원치 않는 동작이 자동 실행되어 디버깅이 어려워질 수 있음 |
| 🔒 보안상 주의 | 무심코 실행되는 코드로 인해 예상치 못한 동작 가능 → 외부 이미지 기반 시에는 ONBUILD를 항상 확인할 것 |
개념 정리 요약
기능 개념 장점
| 🔁 Multi-Stage Build | 빌드 환경과 실행 환경을 분리하여 최종 이미지를 경량화 | 실행에 필요한 최소 구성만 유지 → 보안, 성능 향상 |
| 📁 .dockerignore | Docker build context에서 제외할 파일 지정 | 빌드 속도 향상, 보안 강화, 이미지 사이즈 절감 |
| ⚙️ ARG | 빌드 타임에 주입 가능한 변수 정의 | 유연한 빌드 설정, 외부 값 주입 가능 |
| 🧬 ONBUILD | 하위 이미지에서 자동 실행될 명령어 미리 지정 | 일관된 템플릿 환경 제공, 하위 Dockerfile의 단순화 |
'virtual environment > Docker' 카테고리의 다른 글
| Docker 명령어 모음 (0) | 2025.06.12 |
|---|---|
| [Dockerfile] ARG (Build-time 변수) (0) | 2025.06.12 |
| .dockerignore (0) | 2025.06.12 |
| Dockerfile Multi-Stage Build (0) | 2025.06.12 |
| DevContainer를 이용한 VS Code 개발 환경 구성 (Docker 기반) (0) | 2025.06.12 |