.
├── 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를 이용해서 서버 실행시 처음 실행하는 스크립트
- python 3.8 이상
- (옵션) docker 최신버전
- 파일 변경을 감지하여 자동으로 재실행해주는 기능 포함
- 서버 URL: http://localhost
- Flags
- -d: daemon 모드로 실행
- --build: docker 이미지 빌드 후 실행
docker context use default
docker compose -f docker-compose.dev.yaml --env-file=.env.example [-d] up [--build]
- Python WSGI HTTP Server gunicorn을 사용하여 배포
- Awsgi worker인 uvicorn worker를 사용
- Flags
- -d: daemon 모드로 실행
- --build: docker 이미지 빌드 후 실행
-
ecs local context 생성 (ECS 환경을 로컬에서 시뮬레이션할 수 있게 도와줌)
docker context create ecs --local-simulation ecsLocal docker context use ecsLocal
-
docker-compose.prod.yaml와 .env.example을 참고하여 .env 파일 작성
-
아래 명령어로 서버를 실행
docker compose -f docker-compose.prod.yaml --env-file=.env [-d] up [--build]
-
현재 실행중인 서비스 컨테이너들 중지
docker compose -f <compose file name> stop
-
현재 실행중이지 않은 서비스 컨테이너들 제거
docker compose -f <compose file name> rm
-
정의된 서비스들의 컨테이너 중지 및 제거
docker compose -f <compose file name> down
-
docker ecs context 생성 및 AWS Profile 입력
docker context create ecs contextName docker context use contextName
-
컨테이너 레지스트리 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
-
.env file 작성
- docker-compose.prod.yaml과 .env.example을 참고하여 작성
- RABBITMQ의 Password는 스크립트를 활용하여 생성
cp .env.example .env
-
Docker image build
docker context use default docker compose -f docker-compose.prod.yaml --env-file .env build
-
Docker image를 ECR로 push
docker context use default docker compose -f docker-compose.prod.yaml --env-file .env push
-
Docker cli를 통해 AWS CloudFormation으로 배포
docker context use contextName docker compose -f docker-compose.prod.yaml --env-file .env up
- Swagger: http://localhost/docs
- Redoc: http://localhost/redoc
- lefthook 설치
- lefthook 설치 가이드
- Windows 10은 release에서 다운 받은 후 환경변수에 지정
- lefthook.yml 있는 폴더에서
lefthook install
실행
- lefthook-local.yml 파일 작성
pre-push: exclude_tags: - app - iot pre-commit: exclude_tags: - app - iot