Dockerfile
이 필요하다. 따라서 Dockerfile을 현 프로젝트 루트 폴더 안에 생성하도록 하겠다. # 현재 내가 사용하고 있는 python 버전을 작성해도 됨
# 만약 docker extension이 vscode에 깔려 있다면 자동완성으로 이름을 확인할 수 있음
FROM python:3.9.10-alpine
# python이 실행되기 전에 compile을 거치면서 .pyc 파일을 생성하는데, docker에서는 불필요해 그것을 방지해줌
ENV PYTHONDONTWRITEBYTECODE=1
# 버퍼링을 제거해주기 위해 사용
ENV PYTHONUNBUFFERED=1
RUN apk update
# pillow를 통해 이미지를 사용하고 있어 jpeg 같은 것들을 적어줌
RUN apk add build-base python3-dev py-pip jpeg-dev zlib-dev
# /usr/src/app/에 requirements.txt를 복사해준다.
COPY requirements.txt /usr/src/app/
WORKDIR /usr/src/app
RUN pip install -r requirements.txt
# 현재 폴더에 있는 것들을 다 복사해 /usr/src/app/에 넣어준다.
COPY . /usr/src/app/
terminal
창에서 docker image를 생성하도록 하겠다. $ docker build -t {project_name} .
docker image ls
혹은 docker desktop에서 확인하고, 생성이 완료되었다면 실행해보도록 하겠다. $ docker run -dp 8000:8000 \
> -w /usr/src/app -v "$(pwd):/usr/src/app" \
> turtle_drf_backend \
> sh -c "python manage.py runserver 0.0.0.0:8000"
>>>> -w : 워킹 디렉토리
>>>> -v : 바인드 마운트(현재 폴더 안에 있는 /usr/src/app)
user
에 변화를 주도록 하겠다. usersssss
로 변경했다.docker-compose.yaml
파일을 추가해주도록 하자. version: "3.8"
services:
web:
# 현재 폴더에 있는 것들을 사용해 빌드하겠다.
build: .
command: python manage.py runserver 0.0.0.0:8000
ports:
- 8000:8000
working_dir: /usr/src/app/
volumes:
- ./:/usr/src/app/
env_file:
- ./.env
$ docker-compose build
$ docker-compose up
control + c
로 서버를 종료하면, 브라우저에서도 같이 종료되는 것을 볼 수 있다.