컨테이너는 환경과 컴퓨터os 패키지들을 포함한다! aws등 배포 서버도 container 단위에서 이뤄지는 것
도커 파일은 os 안에서 작동된다. 도커허브에서 검색해서 어떤 os를 컨테이너 안에 사용할지 정할 수 있다.
예를들어
FROM python:3.8-slim-buster
요렇게 쓰여 있으면 가벼운 버전의 리눅스 os+파이썬 3.8 내장이다.
어플리케이션을 실행할 폴더를 새로 만들어주자. 여기선 app이라는 폴더를 만들어보았다.
WORKDIR /app
app폴더 안에는 requirements를 인스톨 할 수 있도록 requirements.txt 파일이 있어야 한다. 베이스 폴더에 있는 requirements.txt를 복사해 도커내 /app폴더에 넣고 이름을 requirements.txt로 지정한다는 뜻이다.
COPY requirements.txt requirements.txt
복사된 requirements.txt파일 속 requirements를 깔아보자.
RUN pip3 install -r requirements.txt
로컬 디렉토리 내 모든 파일을 복사해서 /app 폴더 안에 넣어준다.
COPY . .
python3 manage.py runserver를 해주자.
컨테이너에서 접근할 포트가 필요해서 8000포트를 지정해준다.
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
venv는 도커파일에 올라가지 않길 바라기 때문에 dockerignore에 추가해준다.
짧고 간단한 도커파일이 완성되었다
docker build --tag python-django .
# .에 있는 파일들을 python-django라는 태그를 붙여서 이미지를 빌드해라
docker run --publish 8000:8000 python-django
FROM python:3.10.0-alpine
ENV PYTHONDONTWRITEBYTECODE=1 #파이시 파일이 필요하지 않기 때문에 바이트 코드를 쓰지 말라는 것
ENV PYTHONUNBUFFERED=1 #파이썬이 버퍼링 없이 출력되도록
RUN apk update
RUN apk add build-base python3-dev py-pip jpeg-dev zlib-dev
COPY requirements.txt /usr/src/app/
WORKDIR /usr/src/app
RUN pip install -r requirements.txt
COPY . /usr/src/app/