목표

더보기
  • Dockerfile의 역할을 설명할 수 있다
  • 서버 실행 환경을 Dockerfile로 정의할 수 있다
  • Dockerfile 기 이미지를 빌드할 수 있다
  • docker run만으로 서버가 자동 실행되는 이유를 이해한다

 

1. Dockerfile 개요

더보기

Dockerfile이란 무엇인가? 

  • Dockerfile은 
    실행 환경과 실행 방법을 코드로 정의한 컨테이너 이미지를 만들기 위한 설계도입니다.

  • 서버 관점에서 Dockerfile은
    "서버 실행 환경 + 서버 실행 방법을 코드로 정의한 파일"

  • 서버 실행에 필요한 다음 내용이 Dockerfile에 포함됩니다.
    • 어떤 OS / 런타임을 사용하는가?
    • 서버 코드는 어디에 있는가?
    • 컨테이너가 실행되면 무엇이 실행되는가?
    • 필요한 라이브러리는 무엇인가?

 

2. Dockerfile 기본 구조

더보기


서버 컨테이너에서 사용하는 최소 필수 문법 5가지만 학습합니다.

 

명령어 역할
FROM 기반 이미지 선택
WORKDIR 작업 디렉터리 설정
COPY 서버 코드 복사
RUN 라이브러리 설치
CMD 서버 실행 명령

 

ㄴ 2.1 FROM (기반 이미지 선택)

더보기
FROM python:3.11-slim

의미:

  • Python 3.11 실행 환경 사용
  • slim 버전으로 이미지 크기 최소화

중요 포인트:

  • Dockerfile은 반드시 FROM으로 시작
  • 서버는 언어 런타임이 포함된 이미지를 기반으로 함

 

ㄴ 2.2 WORKDIR (작업 디렉터리 설정)

더보기
WORKDIR /app

의미:

  • 이후 모든 명령의 기준 경로를 /app으로 설정
  • cd /app 을 자동으로 수행한 것과 동일

서버 관점 의미:

  • 서버 코드의 "기본 위치"를 명확히 정의

 

ㄴ2.3 COPY (서버 코드 복사)

더보기
COPY server.py .

의미:

  • 로컬의 server.py 파일을
  • 컨테이너 내부 /app 디렉터리로 복사

중요 포인트:

  • 컨테이너는 로컬 파일을 자동으로 보지 못함
  • 반드시 COPY로 명시해야 함

 

ㄴ 2.4 RUN (라이브러리 설치)

더보기
RUN pip install PySide6
 

의미:

  • 이미지 빌드 시점에 라이브러리 설치
  • 컨테이너 실행 시 매번 설치하지 않음

서버 관점 의미:

  • 서버 실행 환경을 이미지에 고정
  • 재현 가능한 환경 확보

 

ㄴ 2.5 CMD (서버 실행 명령)

더보기
CMD ["python", "server.py"]

의미:

  • 컨테이너가 실행되면 자동으로 실행될 명령
  • 서버의 메인 프로세스

핵심 개념(매우 중요):

CMD로 실행된 프로세스가 종료되면
컨테이너도 함께 종료된다

 

ㄴ 2.6 완성된 최소 Dockerfile 예제

더보기
FROM python:3.11-slim

WORKDIR /app

COPY server.py .

RUN pip install PySide6

CMD ["python", "server.py"]

 

  • Python 3.11 환경
  • PySide6 설치
  • server.py 자동 실행

 

3. Dockerfile 과 docker run의 관계

더보기
docker run chat-server
 

의미:

  • Dockerfile 기반 이미지 실행
  • CMD에 정의된 서버 자동 실행
  • 서버 프로세스 유지 → 컨테이너 Running