Backend/Django

도커 설정

Dean83 2023. 10. 18. 21:39
  • docker를 이용해 AWS 에 적용할 예정
  • 윈도우 환경 기준, (리눅스나 타 운영체제도 괜찮음) Docker Desktop 설치
    • WSL 업데이트 (필요시 수행) 및 버전 2 사용
    • 만일 설치가 안되어 있을 경우, powershell 을 관리자 권한으로 실행 후 다음의 명령어 실행
      • wsl —install
      • wsl —set-default-version 2
  • Dockerfile 이라고 하는 파일을 생성, 내부에 정해신 방식대로 코딩
    • 파이선 설치 및 django, 각종 프레임워크 설치 명령 코딩
    • 시작 옵션 명령 코딩
    • 파일위치는, manage.py 가 있는 위치
    • 해당 파일을 생성 후, docker build 명령어를 통해 빌드
    //Dockerfile 예시
    FROM python:3.9.13
    RUN    apt-get update \\
        && apt-get install openssl \\
        && apt-get install ca-certificates
    RUN pip install django==4.0.10
    RUN pip install djangorestframework==3.14.0
    RUN pip install dj-rest-auth==4.0.1
    RUN pip install django-allauth==0.54.0
    RUN pip install djangorestframework-simplejwt==5.3.0
    RUN pip install django-cors-headers==4.2.0
    RUN pip install rest_framework_simplejwt==0.0.2
    RUN pip install pyopenssl==23.2.0
    RUN pip install django-sendgrid-v5
    WORKDIR /usr/src/app
    COPY . .
    WORKDIR .
    CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
    EXPOSE 8000
    EXPOSE 587
    
  • 명령어 (powershell 을 관리자 권한으로 실행 후 입력)
    • docker ps : 실행중인 도커 이미지 컨테이너 리스트 출력
    • docker rm -f 프로세스 아이디 : 컨테이너 아이디는 docker ps로 확인. 컨테이너 강제 삭제
    • docker images : 도커에서 다운받은 이미지 리스트 표시
    • docker rmi -f 이미지 아이디 : 해당 이미지 삭제
    • docker build -t 이름 . : 맨 뒤에 . 찍는것 중요. 현재 디렉토리 위치에 dockerfile을 통해 이미지를 생성하는 명령어
    • docker stop 컨테이너 아이디 : 컨테이너 중지
    • docker run : 도커 이미지를 실행
      • 옵션값 설명
        • -p 포트번호 : 도커에서 설정한 포트번호와 실제 PC의 포트번호 매칭. 다수의 포트를 연결해야 하면 -p 포트번호 -p 포트번호 이런식으로 여러번 옵션값을 줄 수 있다
        • -rm : 도커 실행 후 자동으로 컨테이너 삭제
        • -it : 키보드 입력이 필요한 경우 사용
        • -d : 컨테이너를 백그라운드에서 실행. 서버 컨테이너 실행히 주로 사용
      • 옵션값 이후, 이미지 태그명:버전명 입력하여 실행
      //도커 이미지 생성 예
      docker build --tag grnd1/demo_django:1.0.0 .
      
      //도커 실행 예
      docker run -it -p 8000:8000 -p 587:587 grnd1/demo_django:1.0.0
      
    • docker logs 컨테이너 아이디 : 해당 컨테이너의 로그를 출력
      • -n 숫자 옵션 : 최근 몇줄만 출력
      • -f 옵션 실시간으로 출력 확인