Vagrant(Ubuntu) + Docker + Django로 개발용 서버 시작까지 간다

2224 단어 도커장고Vagrant

발생한 문제



Django의 개발 환경을 Docker로 만들어 보았다.

여기를 참고로 환경 구축하고 있으면 막혔으므로, 보충의 기사를 만들었습니다.

내 환경


  • windows10 Home
  • Vagrant + Ubuntu
  • Docker CE
  • python3
  • 장고 2.2

  • 원인 및 해결 방법



    Django의 개발 환경을 Docker로 만들어 보았습니다.

    마지막 「개발용 서버 기동」까지는, 이 기사대로 진행할 수 있었습니다.
    마지막으로, 개발 서버 시작 절차
    docker exec test python3 manage.py runserver 0.0.0.0:8000
    

    나중에 브라우저에서 localhost:8000에 액세스하면 실패합니다.

    원인 1: Vagrantfile의 guest 포트와 host 포트의 설정이 이상하다


    config.vm.network "forwarded_port", guest: 8000, host: 12345
    

    host측(Windows)에서 12345의 포트를 사용해, guest측(ubunts)의 8000에 연결하는 것이라고 생각합니다. 따라서 브라우저에서 액세스할 때 포트 지정은 12345여야 합니다.

    원인 2: 컨테이너 시작 시 지정하는 포트와 WEB 서버 시작 시 지정하는 포트가 일치하지 않음



    이전 기사에서는 이런 식으로 컨테이너를 시작했습니다.
    $ docker run -itd -p 127.0.0.1:8000:8000 -v /path/to/src:/code --name test django
    

    이 때의 -p 127.0.0.1:8000:8000 는, 우분투측의 포트 8000과 컨테이너측의 포트 8000을 연결해, 라고 하는 것이라고 생각합니다.

    아까 정도의 원인 1에서 Vagrantfile 내에서 guest측(Ubunts)은 8000을 사용하라고 설정했으므로, 컨테이너 기동시의 지정에도 Ubuntu는 8000을 사용하려고 할 필요가 있습니다.

    또한 원래 기사에서는 이런 식으로 Django와 함께 제공되는 웹 서버를 시작했습니다.
    $ docker exec test python3 manage.py runserver 0.0.0.0:8000
    

    위에서 컨테이너 시작시 컨테이너 측은 8000을 사용하겠다고 지정했으므로 컨테이너 측에서 장고의 웹 서버가 사용하는 것은 8000이어야합니다.

    그림으로 하면 아마 이런 느낌입니다.



    액세스 확인


    http://localhost:12345 
    



    이상입니다. 빙글빙글.

    좋은 웹페이지 즐겨찾기