Docker로 Django 개발환경 구성하기

7216 단어 djangodockerdjango

Docker로 Django 개발환경 구성하기
참고 - 도커 컴포즈를 활용하여 완벽한 개발 환경 구성하기
참고 - Docker container로 정상적으로 띄웠지만, local에서 열리지 않을 때

Docker?


도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 출처 - 위키백과


음.. 대충 찾아보니 컨테이너로 실행해서 서비스별 관리가 편하고 개발 환경 구성이나 배포 테스트 등에 쓰이고 있다고 한다. 프로젝트 경험이 있다면 개발환경 구성에 어려움이 많다는 것은 다들 알고 있을 것이다. 팀원이 많을수록 변경이 빈번하게 일어나고 관리가 힘들었다. (셋팅 해주다 지쳐서 shell로 짜서 돌렸는데 버전, 환경 등 뭔가 다르면 뭔가 안됨...) 이번에는 많이들 사용한다는 docker-compose로 django 개발환경 구성을 해보려고 한다.

아무것도 모르는 도커 초보자라 사이트 하나를 그대로 참고했다. git에서 받은 sample 코드와 비슷하게 연습중인 프로젝트에 넣어봤다. 어떤 내용인지는 참고 사이트에 자세하게 적혀있어 초보자도 따라하기 좋다.

> docker-compose.yml

version: '3'

volumes:
  postgres_data: {}

services:
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgres/data
    environment:
      - POSTGRES_DB=board
      - POSTGRES_USER=boarduser
      - POSTGRES_PASSWORD=qwer1234

  django:
    build:
      context: .
      dockerfile: ./compose/django/Dockerfile-dev
    volumes:
      - ./:/app/
    command: ["./manage.py", "runserver", "0:8000"]
    environment:
     - DJANGO_DB_HOST=db
    depends_on:
      - db
    restart: always
    ports:
      - 8000:8000

database에 대한 셋팅 값 변경해주고 compose/django/ 경로에dockerfile-dev 파일도 생성해주었다. 근데 웹으로 접속해도 들어가지지 않았다. 처음엔 ip문젠가해서 다른 사이트 띄워서 확인해보고 방화벽 문제인가해서 ufw 추가해보고 했는데 알고보니 allow_hosts 에 0.0.0.0을 추가해줘야 한다고..

> settings.py

ALLOWED_HOSTS = ['0.0.0.0']
... 
DATABASES = {
	'default' : {
		'ENGINE' : 'django.db.backends.postgresql',
		'NAME' : 'board',
		'USER' : 'boarduser',
		'PASSWORD' : 'qwer1234',
		'HOST' : 'db',
		'PORT' : '5432'
	}
}

그렇게 했을 때 샘플 사이트는 잘떴는데.. 이상하게 내 장고 프로젝트에선 오류가 계속 났다. djangorestframework-simplejwt 4.4.0을 사용하고 있었는데 계속 버전을 못찾는 것이다.. 검색 해보니 파이썬 3.9 문제로 버전을 4.6.0 or 4.0.0으로 변경하라는 내용이 있었다. 그래서 후다닥 바꿨는데 의존성 충돌 나서 PyJWT도 1.7.0으로 버전을 바꿔줬다. 사실 이런 부분이 도커를 사용하면 좋은 부분이 아닐까 싶다.

Docker-compose 명령어

docker-compose ps

docker-compose logs

docker-compose build
docker-compose up -d
docker -rm [Name]

좋은 웹페이지 즐겨찾기