docker 이미지
- docker 이미지는 용량 최적화를 위해 컨테이너 실행에 필요한 최소한의 파일만 들어있는 slim 이미지를 지원하고 있다
- 용량이 작은 이미지를 사용할 때는 외부 패키지를 설치할 때 필요한 의존성 파일들이 존재하지 않아 에러가 발생할 수 있음
slim 이미지의 종류와 특징
기본 python 이미지
python alpine 이미지(가장 작은 용량)
docker hub 이미지 페이지의 tags에서 확인 가능
이미지의 태그별 특징
- buster, jessie, stretch
- debian에서 만든 linux를 기반으로 만들어진 이미지
- buster, jessie, stretch는 os의 codename
- python:3.8과 python:3.8-buster는 동일함 (약 300~350mb)
- slim
- 실행에 필요한 환경만 만들어둔 이미지
- 이미지가 기본 이미지에 비해서는 작다 (약 40~50mb)
- 보통 python 실행환경에서 가장 많이 쓰이는 이미지
- alpine
- 용량이 작고, 보안에 집중한 alpine-linux 기반으로 만들어진 이미지
- 보통 이미지들 중에서 가장 작다는 특징 (약 15~20mb)
- python 기준, pip install을 할 때 불리한 점이 있다
backend/Dockerfile
# python 3.10.8-slim버전 이미지를 사용해 빌드
FROM python:3.10.8-slim
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN mkdir /app/
WORKDIR /app/
# slim 이미지에서 postgresql 패키지를 설치하기 위해 필요 명령어 추가
RUN apt update && apt install libpq-dev gcc -y
COPY ./django/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install gunicorn psycopg2
docker-compose.yml
sudo docker compose up -d --build
sudo docker compose logs -f
slim 이미지를 사용하기 전과 용량을 비교
sudo docker compose images
sudo docker image prune -a
'Docker' 카테고리의 다른 글
Docker env 정보 관리 (1) | 2023.06.01 |
---|---|
Django nginx 웹서버 컨테이너 생성 (1) | 2023.06.01 |
Docker gunicorn django 프로젝트 컨테이너 생성 (1) | 2023.06.01 |
Docker postgresql 컨테이너 생성 (1) | 2023.06.01 |
docker-compose.yml 두 개 이상의 컨테이너 생성하기 (1) | 2023.06.01 |