Docker!

배포와 관련된 모든 내용은 AWS의 클라우드 서비스를 기반으로 합니다.

추천

파이썬을 설치한다면 pyenv, pyenv-virtualenv로 관리합시다!

문서참조 -> pyenv와 virtualenv를 사용한 파이썬 개발환경 구성

참고문서

목차

  • 로컬에서 서버 띄워보기

    • brew를 사용한 Python3 설치
      brew install python3
    • Django 설치
      pip3 install django
      django-admin.py startproject mystie
    • runserver 실행
      cd mysite
      python3 manage.py runserver
    • requirements.txt 만들기 pip3 freeze > requirements.txt or vim requirements.txt > django==3.5.1 \n pytz==2018.9
  • 로컬 Docker에서 서버 띄워보기

    • Docker 설치 인터넷에서 Docker for mac 설치.
    • python:3.7.2-slim으로부터 runserver 실행해보기
      docker run --rm -it python:3.7.2-silm /bin/bash
    • Docker Port 설정&외부 포트연결하기. docker run --rm -it -p 7999:8000 python:3.7.2-slim /bin/bash
    • Docker Port 확인 하기. docker ps
  • 로컬 Docker Image에서 서버 띄워보기

    • Dockerfile작성 vim Dockerfile
      # EXAMPLE
      # 실행할 명령어
      RUN pip install django
      
      # cd(change directory)
      WORKDIR /src
      
      RUN django-admin startproject mysite
      WORKDIR /src/mysite
      
      CMD python manage.py runserver 0:8000
    • Dockerfile을 사용해서 이미지 생성
      FROM       python:3.7.2-slim
      MAINTAINER joenggyu0@gmail.COPY
      # 설치할 패키지 정보가 담긴 파일을 Image의 /tmp/에 복사
      COPY  requirements.txt /tmp/requirements.txt
      
      # requirements.txt 파일을 이용해서 Images에 파이썬 ㅋ패키지 설치
      RUN pip install -r /tmp/requirements.txt
      
      # 현재 디렉토리의 모든 내용을 Image의 /srv/경로에 복사
      COPY . /srv/project/
      
      #복사한 소스 경로로 이동후 개발서버를 8000번 포트로 실행
      WORKDIR /srv/project
      
      CMD python manage.py runserver 0:8000
    • 생성한 이미지로 runserver 실행해보기 docker build -t mysite .
      build를 어디서 하는가에 대한 디렉토리 이슈 조심! docker run --rm -it -p 7999:8000 mysite
  • EC2에서 서버 띄워보기

    • EC2 생성하기

      • 보안그룹 생성
        • HTTP프로토콜의 인바운드 설정
        • SSH프로토콜의 인바운드 설정
      • 키 페어 생성
        • .pem파일을 ~/.ssh 폴더로 이동
      • EC2 생성
        • 보안그룹 선택
        • 키페어 선택
    • EC2에 접속하기

      • SSH접속에 키페어 사용
        • chmod를 사용한 개인키 파일 모드 변경
    • Django설치 및 runserver

      •   sudo apt update
          sudo apt install python3-pip
          pip3 install django
          # 재접속
          mkdir ~/example
          cd ~/example
          django-admin startproject app
          cd app
          sudo python3 manage.py runserver 0:80
      • DISALLOWED_HOSTS를 vim으로 해결하기

  • EC2에서 Docker를 사용해 서버 띄워보기

    • 설치

    •   sudo apt update
        sudo apt install \
            apt-transport-https \
            ca-certificates \
            curl \
            gnupg-agent \
            software-properties-common
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
        sudo add-apt-repository \
           "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
           $(lsb_release -cs) \
           stable"
        sudo apt update
        sudo apt install docker-ce docker-ce-cli
      
    • scp를 사용해 EC2로 파일 복사하기

      • scp -i ~/.ssh/<PEM_FileName>.pem -r . ubuntu@<EC2_Public_Domain>:/home/ubuntu/docker/
    • Docker Image Build

      • sudo docker build -t example .
    • DISALLOWED_HOSTS를 코드 수정 후 scp로 다시 복사해서 해결

      • ssh로 서버 코드 삭제
      • scp로 재업로드
  • DockerHub에 Docker Image 업로드하고 서버 띄워보기

    • docker login
    • docker tag <이미지명> <사용자명>/<저장소명>
    • docker push <사용자명>/<저장소명>
    • EC2에서 docker run시켜보기
  • ElasticBeanstalk을 사용해서 서버 띄워보기

    • git archive -v -o app.zip --format=zip HEAD
  • Route53으로 서버 연결시켜보기

    • Route53에 도메인 등록
    • 등록한 도메인의 A레코드를 ElasticBeanstalk환경에 연결