2025-08-05 04:23
Tags: 도커
Dockerfile
- 도커 이미지 를 만들때 사용하는 파일
 - 도커 이미지 빌드 과정을 명령어 형태로 텍스트에 기록한 파일
 - 컨테이너 도커 이미지를 코드로 정의, 구축 하는 설계도
 - 파일 만들고 나서 docker build 명령어로 도커 이미지 생성 가능
 
주요 명령어
- FROM : 베이스 이미지 생성
 - COPY : 파일 복사(이동) : 호스트 컴퓨터 파일 복사 → 컨테이너 전달
- COPY {호스트 컴퓨터에 있는 복사할 파일의 경로} {컨테이너에서 파일이 위치할 경로}
 
 - ENTRYPOINT : ‘컨테이너가 시작’(‘컨테이너 생성 직후’)할 때 실행되는 명령어
 - RUN : ‘이미지를 생성하는 과정’에서 사용할 명령문 실행
 - WORKDIR: 작업 디렉토리 지정
 - EXPOSE: 컨테이너 내부 사용중 포트 문서화(실제 작동 영향X)
 
| 명령어 | 기능 | 예시 | 
|---|---|---|
| FROM | 베이스 이미지 지정 | FROM ubuntu:22.04[^1] | 
| ARG | 빌드 시 변수 선언 | ARG VERSION=1.0 | 
| ENV | 환경 변수 설정 | ENV APP_ENV=production | 
| WORKDIR | 작업 디렉토리 변경 | WORKDIR /app | 
| COPY | 호스트 파일 복사 | COPY src/ /app/src/ | 
| ADD | 파일·URL 추가 | ADD archive.tar.gz /app/ | 
| RUN | 이미지 빌드 중 명령 실행 | RUN apt-get update && apt-get install -y curl | 
| LABEL | 메타데이터 추가 | LABEL maintainer="dev@example.com" | 
| EXPOSE | 컨테이너 포트 문서화 | EXPOSE 80 | 
| USER | 실행 사용자 지정 | USER appuser | 
| ENTRYPOINT | 실행 진입점 설정 | ENTRYPOINT ["npm","start"] | 
| CMD | 기본 실행 명령 지정 | CMD ["python","app.py"] | 
| VOLUME | 볼륨 마운트 지점 선언 | VOLUME ["/data"] | 
| HEALTHCHECK | 컨테이너 상태 검사 | `HEALTHCHECK CMD curl -f http://localhost/ | 
| ONBUILD | 하위 이미지 빌드시 트리거 | ONBUILD COPY . /src | 
| STOPSIGNAL | 종료 시그널 설정 | STOPSIGNAL SIGTERM | 
| SHELL | 기본 셸 변경 | SHELL ["/bin/bash","-c"] | 
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci -only=production
COPY . .
USER node
CMD ["node", "index.js"]종료된 컨테이너 들어가서 디버깅
- 컨테이너가 바로 종료되지 않게 일시정지 명령어 걸고 디버깅
 
FROM openjdk:17-jdk
...
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500초 동안 시스템을 일시정지 시키는 명령어