본문 바로가기

기타-프로그래밍

Django venv를 Docker로 옮기기

반응형

1.  Docker Desktop을 설치한다.

2. pip freeze > requirements.txt 명령을 이용하여 가상환경 라이브러리를 리스트로 만든다.

3. Dockerfile을 Project Root에 만든다. 

# pull official base image
FROM python:3.8.0-alpine

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN apk update
RUN apk add postgresql-dev gcc python3-dev musl-dev zlib-dev jpeg-dev libffi-dev openssl-dev cargo
COPY . /usr/src/app/
# install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

4. docker-compose.yml 파일을 만든다.

version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./:/usr/src/app/
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev

5. Settings 파일 수정

SECRET_KEY = os.environ.get('SECRET_KEY', '***')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = int(os.environ.get('DEBUG', 1))

if os.environ.get('DJANGO_ALLOWED_HOSTS'):
    ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS').split(' ')
else:
    ALLOWED_HOSTS = []

6. .env.dev 파일 생성

DEBUG = 1
SECRET_KEY = ***
ALLOWED_HOSTS = localhost 127.0.0.1 [::1]

7. docker-compose build 명령 실행

8. docker-compose up으로 docker 컨테이너를 실행 한다.

9. daemon으로 실행하려면 docker-compose up -d로 컨테이너를 실행한다.

10. docker image ls 명령어를 이용하여 존재하는 image를 확인 할 수 있다.

11. docker container ls 명령어를 이용하여 실행중인 container를 확인 할 수 있다.

12. 테스트 실행도 가능하다.

$ docker-compose exec web python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
...........
----------------------------------------------------------------------
Ran 11 tests in 4.580s

OK
Destroying test database for alias 'default'...

13. docker-compose down으로 컨테이너 중단 한다.

 

반응형

'기타-프로그래밍' 카테고리의 다른 글

Gunicorn Web Server Gateway Interface를 docker에서 사용하기  (0) 2022.03.06
PostgreSQL Docker 적용하기  (0) 2022.03.06
Bootstrap 시작하기  (0) 2022.02.08
Maven 명령어 정리  (0) 2018.01.25
MADP EMM 개념 정리  (0) 2018.01.25