capstone-2021-3

플라스틱 컵 재활용 선순환 생태계 조성 프로젝트

View the Project on GitHub kookmin-sw/capstone-2021-3

INOBUS Backend

폴더 및 파일 구조

.
├── docker                    # Docker 관련 파일들을 모아둔 폴더
├── models                    # API에 사용되는 모델들을 정의한 폴더
├── requirements              # 필요한 패키지들을 정의한 파일들을 모아둔 폴더
├── routes                    # API router 들을 정의한 폴더
├── utils                     # util 모음 폴더
├── .env.example              # 환경변수 예시 파일
├── config.py                 # 설정을 관리하는 폴더
├── database.py               # DB 연결 객체를 제공해주는 파일
├── docker-compose.dev.yaml   # 개발용 docker-compose 파일
├── docker-compose.prod.yaml  # 배포용 docker-compose 파일
├── docs.html                 # 호스팅용 API 문서 파일
├── gunicorn_conf.py          # 배포 시 사용하는 gunicorn 설정을 정의하는 파일
├── main_consumer.py          # IOT 디바이스와 DB를 연결해주는 Consumer 진입점
├── main.py                   # 애플리케이션 진입점
└── prestart.sh               # docker를 이용해서 서버 실행시 처음 실행하는 스크립트

사전준비

배포 필수 요구사항

실행

개발용 서버 실행하기

docker context use default
docker compose -f docker-compose.dev.yaml --env-file=.env.example [-d] up [--build]

배포용 환경으로 개발용 서버 실행하기

  1. ecs local context 생성 (ECS 환경을 로컬에서 시뮬레이션할 수 있게 도와줌)
    docker context create ecs --local-simulation ecsLocal
    docker context use ecsLocal
    
  2. docker-compose.prod.yaml.env.example을 참고하여 .env 파일 작성

  3. 아래 명령어로 서버를 실행
    docker compose -f docker-compose.prod.yaml --env-file=.env [-d] up [--build]
    

컨테이너 중지 및 제거하기

배포

  1. docker ecs context 생성 및 AWS Profile 입력

    docker context create ecs contextName
    docker context use contextName
    
  2. 컨테이너 레지스트리 ECR 로그인

    aws ecr get-login-password --region us-west-2 |
     docker login --username AWS --password-stdin 573620237252.dkr.ecr.us-west-2.amazonaws.com/inobus
    
  3. .env file 작성

    cp .env.example .env
    
  4. Docker image build

    docker context use default
    docker compose -f docker-compose.prod.yaml --env-file .env build
    
  5. Docker image를 ECR로 push

    docker context use default
    docker compose -f docker-compose.prod.yaml --env-file .env push
    
  6. Docker cli를 통해 AWS CloudFormation으로 배포

    docker context use contextName
    docker compose -f docker-compose.prod.yaml --env-file .env up
    

개발

API 문서 링크

Git hook 설정