2025-08-05 04:23

Status:

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초 동안 시스템을 일시정지 시키는 명령어

References

도커 명령어

Dockerfile 핸드북