3. Dockerfile 학습

목표
더보기
- 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