Python/Django

도커(Docker)로 배포하기

HoneyIT 2022. 7. 4. 13:50
반응형

도커란?

다른 하드웨어와 운영체제에서 작업하더라도 동일한 환경을 갖출 수 있도록 도와주는 기술입니다.

즉, 개발과 배포 환경이 달라도 따로 환경설정 과정을 거치지 않고 실행이 가능하게 합니다.

 

1. 도커 설치하기

작업 관리자를 열어 가상화 여부를 확인합니다.

 

docker.com

도커 홈페이지(docker.com)에 접속하여 윈도우용 Docker Desktop을 설치합니다.

 

 

위와 같이 에러가 뜰 경우 해당 페이지의 공식 메뉴얼을 참고하여 커널을 업데이트 합니다.

 

 

docker의 버전이 어떤 경로에서든 동일하게 나오면 성공입니다!

 

 

2. 도커 파일 만들기

 

모듈 리스트 만들기

 

현재 여러 라이브러리들이 가상환경(venv)에 설치되어 있습니다. 이것들을 도커 컨테이너로 옮겨야 합니다.

'pip freeze > requirments.txt'로 지금까지 가상환경에 설치한 라이브러리들을 리스트로 만들어 저장합니다.

 

 

도커 설정파일

Dockerfile

해당 프로젝트 폴더에 확장자 없이 도커 설정 파일을 만듭니다. (Dockerfile)

  1. 도커는 파이썬이 설치되어 있는 이미지를 기본으로 제공합니다. 이 이미지를 불러옵니다.
  2. 프로젝트의 작업 폴더를 지정합니다.
  3. 파이썬은 소스 코드를 컴파일해서 확장자가 .pyc인 파일을 생성합니다. 도커를 이용하면 .pyc가 필요하지 않으므로 생성하지 않도록 합니다.
  4. 파이썬 로그가 버퍼링 없이 즉각적으로 출력하게 합니다.
  5. 로컬 컴퓨터의 현재 위치에 있는 파일을 모두 작업 폴더로 복사합니다.
  6. requirements.txt에 나열된 라이브러리를 설치합니다.

 

도커 컴포즈 파일 만들기

도커 컴포즈 파일을 사용하면 컨테이너 여러 개를 한 번에 실행시킬 수 있고, 컨테이너를 실행시킬 때 옵션을 줄 수 있습니다.

 

docker-compose.yml

  1. 도커 컴포즈 파일 포맷을 최신 버전으로 사용합니다.
  2. web이라는 이름의 서비스 하나만 실행합니다.
  3. 현재 폴더를 build합니다.
  4. command로 터미널에서 직접 입력했던 서버 실행 명령을 대신 입력합니다.
  5. volumes로 로컬 컴퓨터의 폴더와 도커의 폴더를 연결합니다.
  6. posts로 이전과 똑같은 포트 8000을 사용합니다.
  7. 오류 페이지가 다른 사람에게 보이지 않도록 settings.py에서 관리되던 요소 일부를 개발환경(.env.dev)과 배포환경(.env.prod)으로 나누어 관리합니다. env_file을 따로 명시하면 settings.py에서 이 값을 불러와서 사용할 수 있습니다.

 

setting.py 수정하고 개발환경 파일 작성하기

settings.py

  1. 'SECRET_KEY'에 저장되어 있는 환경변수 값을 가져옵니다.
  2. 로컬에서 개발하는 경우에는 이 값이 True가 되도록 1을 사용하고 그렇지 않은 경우에는 0이 될 수 있도록 합니다.
  3. HOST로 허용하는 주소를  적어둡니다. 서비스로 공개할 때는 보안을 위해 서버가 될 URL만 남겨두어야 합니다. 반면에 개발 시에는 127.0.0.1이나 localhost로 장고에 접근할 수 있어야 합니다.

 

.env.dev

.env.dev 파일을 만들고 위와 같이 입력합니다.

 

 

docker-compose build로 이미지를 만들고

docker-compose up으로 컨테이너를 실행합니다.

 

 

'http://127.0.0.1:8000/' 로 접속하면 정상적으로 동작하는 것을 확인할 수 있습니다.

 

 

'docker-compose up -d' 로 백그라운드에서 docker를 실행할 수 있습니다.

 

 

'docker-compose down' 으로 백그라운드 실행을 중지시킬 수 있습니다.

 


Docker 실행 명령어

 

도커 이미지 빌드

docker-compose build

 

도커 실행

docker-compose up

 

도커 이미지 빌드 후 실행

docker-compose up --build

 

도커 백그라운드 실행

docker-compose up -d

 

도커 web에서 테스트

docker-compose exec web python manage.py test

 

도커 이미지 출력

docker image ls

 

도커 실행 종료

docker-compose down

 

 

https://docs.docker.com/reference/

 

Reference documentation

 

docs.docker.com

 

https://g.co/kgs/A6fcWi

 

Do it! 장고+부트스트랩 파이썬 웹 개발의 정석: 웹 기초부터 블로그 개발·배포·운영까지, 만들면

만들면서 배우는 파이썬 웹 개발 A to Z!파이썬 기초 문법만 알면 나만의 블로그 사이트를 만들 수 있다!이 책은 블로그 웹 사이트를 만드는 실습을 진행하면서 웹 개발 기초부터 블로그 개발, 배

www.google.com

 

반응형

'Python > Django' 카테고리의 다른 글

Django Lightsail(Ubuntu)로 서비스하기  (0) 2022.07.07
Django PostgreSQL 사용하기  (0) 2022.07.05
Django 검색 기능 구현  (1) 2022.06.30
Django pagination 구현  (0) 2022.06.30
django-crispy-form을 사용하여 폼 모양 꾸미기  (0) 2022.06.27