### **먼저 Docker란?**
Docker는 애플리케이션을 **컨테이너(Container)**라는 독립된 환경에서 실행할 수 있도록 도와주는 플랫폼입니다. 컨테이너는 애플리케이션과 그에 필요한 모든 것을 포함한 가벼운 가상화 환경입니다.
#### **주요 개념**
1. **이미지 (Image)**
- 컨테이너의 실행을 위한 **템플릿**입니다. 애플리케이션 코드, 런타임, 라이브러리, 환경설정 등을 포함합니다.
- 예: Python 애플리케이션을 실행하기 위한 Python 이미지.
2. **컨테이너 (Container)**
- 이미지를 기반으로 실행된 **독립된 실행 환경**입니다.
- 예: 실제로 Python 애플리케이션이 실행되는 공간.
3. **Dockerfile**
- 이미지를 만들기 위한 스크립트입니다.
- 예: 특정 애플리케이션을 설치하고 실행 환경을 설정하는 코드.
4. **Docker Hub**
- Docker 이미지의 중앙 저장소로, 미리 만들어진 이미지를 다운로드하거나 직접 올릴 수 있습니다.
### **Docker 사용료**
- **Docker Desktop**
- **무료 플랜**: 개인 사용자 및 소규모 기업 (직원 수 250명 이하, 연매출 $10M 이하).
- **유료 플랜**: 기업 환경에서 사용 시, 기능 추가 제공.
- **Pro**: $5/월
- **Team**: $9/월
- **Business**: $21/월
- **Docker Engine** (CLI 및 컨테이너 실행에 사용)
- 오픈소스, 무료로 사용 가능.
### **Docker는 언제 유용할까?**
1. **다양한 개발 환경 테스트**
- 여러 버전의 Python, Node.js, Java 등을 손쉽게 실행.
2. **마이크로서비스 아키텍처**
- 각각의 서비스가 독립된 컨테이너로 실행.
3. **CI/CD 파이프라인**
- 지속적 통합 및 배포에 활용.
1. 그래서 장고를 도커에 어떻게 사용하느냐?
### 1. **Docker 설치**
Docker가 시스템에 설치되어 있어야[Docker 설치 링크](https://www.docker.com/).
Docker: Accelerated Container Application Development
Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.
www.docker.com
### 2. **`Dockerfile` 생성**
`Dockerfile`(파일 확장자 없음)을 프로젝트 루트에 추가 후 아래 내용 삽입:
FROM python:3.10.15
WORKDIR C:\Users\winst\Documents\project\django_api-main
# 프로젝트 폴더 위치. manage.py를 가지고 있는 폴더의 위치
COPY . .
# 프로젝트의 모든 파일을 복사 -> 이미지 파일
RUN pip install -r requirements.txt
# requirements.txt에 적혀있는 pip들을 설치
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
# 이 문장은 컨테이너가 실행될 때 기본으로 실행할 명령을 지정
# 만약 gunicorn을 사용한다면 CMD ["gunicorn", "--bind", "0.0.0.0:8000", "config.wsgi:application"]
EXPOSE 8000
# django 서버의 포트를 따라 Docker의 컨테이너 8000 포트
# 장고의 기본 포트번호는 8000
* 참고로 데이터베이스 태그에서 호스트는
'HOST': 'host.docker.internal',
### 3. **`requirements.txt` 생성** (bash)
현재 프로젝트의 Python 패키지를 `requirements.txt`에 추가:
pip freeze > requirements.txt
### 4. **Docker 이미지 빌드**(bash): 도커 데스크탑이 실행되어 있어야 함
docker build -t my-django-app .
### 5. **컨테이너 실행**
docker run -p 8000:8000 my-django-app
'Programming > 장고(django) - API' 카테고리의 다른 글
장고(django)/ WSGI 배포 (0) | 2023.09.27 |
---|---|
장고(django)/ CORS (0) | 2023.09.13 |
장고(django)/ REST Framework(viewsets, permissons, routers 관련) (0) | 2023.06.08 |
장고(django)/ REST Framework(serializers 관련) (0) | 2023.06.08 |
장고(django)/ json to DB(제이슨 파일을 데이터베이스로) (0) | 2023.06.04 |