Docker로 Django 개발환경 구성하기
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]
Author And Source
이 문제에 관하여(Docker로 Django 개발환경 구성하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lucyhye/Docker로-django저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)