본문 바로가기
Coding/TIL & 배운것들

Docker 특강정리

by 코딩짜는 머글 2024. 12. 11.
오늘은 간단하게 django프로젝트를 생성해서 docker를 실행하는 법을 배웠다. 

 


 

Django 프로젝트 초기화

cd my-project-directory # 평소 하던 프로젝트 경로로 이동하세요.
mkdir django-docker-app
cd django-docker-app
python -m venv venv  # 만약 안될시 python3 -m venv venv사용
source venv/bin/activate  # Windows: venv\\Scripts\\activate
pip install django==4.2.1  # Docker에서 쓸 Python 버전과 호환이 되는 Django 버전
django-admin startproject myapp .

 

로컬 서버 실행 확인

python manage.py runserver

 

브라우저에서 http://127.0.0.1:8000 접속하여 Django 기본 페이지 확인.

 

 

Dockerfile 작성

프로젝트 루트 디렉토리에 Dockerfile 생성

# (베이스 이미지)
# python:3.9-slim이라는 이미지를 Docker hub에서 가져옴
FROM python:3.9-slim

# (작업 디렉토리 설정)
# 앞으로 작업할 폴더 생성 & 지정
WORKDIR /app

# (종속성 설치)
# requirements.txt을 WORKDIR로 설정한 app이라는 폴더에 옮겨줌
COPY requirements.txt .

# requirements.txt에 있는 내용 전부 설치
RUN pip install -r requirements.txt


# (소스 코드 복사)
# 지금 폴더를 컨테이너에 전부 복사
COPY . .

# (포트 노출)
EXPOSE 8000

# (명령 실행)
# python manage.py runserver 0.0.0.0:8000 명령어를 컨테이너에서 실행
# 0.0.0.0은 외부에 연결 가능한 것을 의미
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

 

requirements.txt 생성

pip freeze > requirements.txt

 

 

Docker 이미지 빌드 및 실행

 

- 이미지 빌드 : 

docker build -t django-app .

 설명 : 지금 경로( . )를 django-app 이라는 이름( -t )으로 빌드( build ) 해줘.

 

- 컨테이너 실행 : 

docker run -d -p 8000:8000 django-app

설명 : django-app 이라는 컨테이너를 컨테이너로 실행 ( run ). 내 컴퓨터에서 8000 포트로 접속하면, 컨테이너의 8000포트로 연결( -p 8000:8000 ). 대신에, 터미널에서는 detach ( -d ) 하도록해.

 

- 브라우저에서 http://127.0.0.1:8000 접속

 

 


 

 

Docker 와 Django 의 통합 이점

 

1. 새로운 개발자 온보딩 간소화

  • 개발 환경 설정이 쉽고 빠르다.
  • 백엔드 개발자나 다른 AI개발자에게 "깃헙에 있는 Dockerfile로 도커 빌드를 실행하세요" 한 줄로 환경 구축 완료

2. 서버 환경 간 호환성 문제 해결

  • 운영 체제나 설정이 다른 서버에서도 동일한 결과를 보장

3. 애플리케이션 격리

  • Django 프로젝트가 다른 프로젝트와 독립적으로 실행
  • 동일 머신에서 여러 프로젝트 실행 가능. -> docker-compose랑 연결

4. 자동화된 배포

  • Docker 이미지를 활용한 CI/CD (지속적 통합 및 배포) 프로세스 구축

 

'Coding > TIL & 배운것들' 카테고리의 다른 글

Django를 사용하는 이유?  (0) 2024.12.13
ERD 특강정리  (0) 2024.12.12
도커(Docker)  (0) 2024.12.10
CI / CD  (0) 2024.12.09
12/06 베이직반 수업정리  (0) 2024.12.06