Home » 윈도우에 docker를 사용해서 python 개발환경 구축

윈도우에 docker를 사용해서 python 개발환경 구축

  • 파워 쉘을 띄운다.(powershell 3 이상이 깔려 있어야 한다.)
  • scoop 업데이트 하기

> scoop install git (git 안깔려 있는 경우)
> scoop update

  • curl 설치

> scoop install curl

  • vagrant 설치

> scoop install vagrant

  • Vagrantfile 작성하기 (작업 디렉토리를 생성하고 파일 작성한다.)
    • 1) ubuntu/trusty64 운영체제를 다운로드 받는다
    • 2) 내부 80포트를 외부 8000포트로 포워딩 설정한다.
    • 3) 현재 디렉토리를 /project 로 마운트 시킨다.
    • 4) 가상환경에서 호스트 머신의 1/4 정도의 자원을 사용하도록 설정
    • 5) 가상환경에서 docker, docker-composer 를 설치한다.

  • vagrant 실행시키기 (필요에 따라 VirtualBox를 설치하기도 함)

> vagrant up –provision
> vagrant box update ( 업데이트하라고 문구가 나오면 명령어를 실행한다)

  • 가상환경에 접속하기

> vagrant ssh
> docker –version
> docker-compose –version

정상적으로 작동하지 않을 경우 재부팅해 보면 되는 경우가 있으며, 터미널에서 경로가 안먹혀 ssh 가 안될 때도 있다. 안 될 때는 scoop 로 필요한 유틸을 설치한다. (https://www.outcoldman.com/en/archive/2014/07/20/scoop/)

  • docker image 만들기
    • cd /project
    • Dockerfile 파일 작성

  • docker 이미지 빌드 하기

> docker build -t [username]/[image] .

  • hub 리포지토리에 올리기 (우선 docker login 으로 인증을 먼저 한다)

> docker push [username]/[image]

  • docker-compose.yml 파일 작성
    • 다음 설정 파일은 4개 서버(django,redis,postgresql,celery)를 컨테이너로 설치하는 작업을 수행한다.

  • redeploy.sh 작성하기

개발 프로세스

  • To access your local server you just go to http://localhost/

  • To redeploy local changes do ./redeploy.sh

  • To see all logs of your project run:

> docker-compose logs

  • To quickly redeploy changes use:

> docker-compose restart django

  • To connect to Django shell just do (if you have running container called CONTAINER):

> docker exec -it CONTAINER python manage.py shell

  • To make migrations:

> docker exec -it CONTAINER python manage.py schemamigration blabla –auto

  • Or you can connect to bash inside the container:

> docker exec -it CONTAINER /bin/bash

  • You can dump your local database to .json file (you can specify a table to dump):

> docker exec -it CONTAINER python manage.py dumpdata > testdb.json

  • Or you can load data to your database from file:

> docker exec -it CONTAINER python manage.py loaddata testdb.json

  • Use this command to monitor status of your running containers:

> docker stats $(docker ps -q)

  • Use this command to delete all stopped containers:

docker rm -v `docker ps -a -q -f status=exited`