본문 바로가기
Docker

Docker를 활용한 서버 배포 (3) : Dockerfile로 이미지 빌드

by Byeong 2024. 12. 30.

직접 Dockerfile을 사용하여 토커 이미지를 생성하고 컨테이너를 실행하여 배포과정을 실습해 보려 한다. 


Dockerfile 

 Dockerfile은 Docker 이미지를 생성하기 위한 설정 파일로, 애플리케이션 실행에 필요한 종속성, 설정, 명령어 등을 명시합니다. 이를 통해 애플리케이션을 컨테이너 화하여 어디서나 일관된 환경에서 실행할 수 있습니다.


Dockerfile 명령어 

  1. FROM : 베이스 이미지를 지정.
  2. RUN : 이미지를 생성하는 동안 실행할 명령어를 입력.
  3. CMD : 컨테이너를 생성할 때, 실행할 명령어를 입력.
  4. ENTRYPOINT : 컨테이너 시작할 때, 실행할 명령어를 입력, CMD와 함께 사용하여 유연성 제공.
  5. COPY : 로컬 파일 또는 디렉토리를 컨테이너 이미지로 복사.
  6. WORKDIR : 컨테이너 내에서 작업 디렉토리를 설정.
  7. ENV : 환경 변수 설정.
  8. EXPOSE : 컨테이너가 사용할 네트워크 포트를 지정. 

Dockerfile 만들기

# Python 3.13-slim 이미지를 베이스 이미지로 설정
FROM python:3.13-slim

# 컨테이너 내에서 작업 디렉토리를 '/app'으로 설정
WORKDIR /app

# 의존성과 라이브러를 설치하기 위해 requirements.txt 파일 복사
COPY requirements.txt .

# requirements.txt에 정의된 패키지들을 설치
RUN pip install -r requirements.txt

# backend 소스 코드를 컨테이너로 복사
COPY . .

# Django 애플리케이션 실행
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

# 포트를 8000번으로 설정
EXPOSE 8000

 

위 Dockerfile을 사용해 Docker 이미지를 빌드하고, 컨테이너를 실행한다. ( Dockerfile이 있는 디렉터리에서 실행 )

# docker 이미지 파일 만들기
docker build -t my-backend .

# 해당 이미지를 가지고 켄테이너에서 실행
docker run -d -p 8000:8000 my-backend

# 컨테이너 상태 확인
docker ps -a

 

 

 컨테이너 내부의 파일 구조를 확인하고 싶다면, 아래와 같은 명령어를 사용해 Dockerfile에 명시적으로 추가하거나 컨테이너 내에서 직접 실행할 수 있다. ( 디렉토리 구조 에러로 엄청 고생했음ㅠ )

# dockerfile에 추가
CMD ["ls", "-R", "/app"]

마무리 

Dockerfile을 이용해 로컬호스트를 구현했습니다.
다음 단계로, NginxDocker Compose를 활용하여 로컬 서버에서 배포를 진행할 예정입니다.