코딩 교육 TIL

2024-06-03 AI 코딩 TIL

HyunjunPark 2024. 6. 3. 20:32
아 프로젝트 이제 배포도 해보자!
  • 현재까지 진행된 부분을 정리하여 이번주 안으로 ver.1 단계를 배포해서 사용할 수 있는 상태로 만들어 보도록 한다.
  • 현재 진행 단계
    • 얼굴인식 ( 완료 ) : 얼굴인식으로 10대 순으로 인식 가능
    • 음성인식 ( 진행중 ) : 음성 인식으로 추천 메뉴를 받아서 오는 단계 완료, 각 언어별로 음성인식 기능 지원, 고연령자 탬플릿에서 음성인식으로 메뉴 선택 및 장바구니 수정, 결제진행 설정 진행중
    • 기본 키오스크 탬플릿 ( 완료 ) : 각 나라별로 언어에 맞추어 메뉴를 표기 및 추천 메뉴 별도 확대 제공, AI답변을 메세지표기
    • 고연령자 탬플릿 ( 진행중 ) : 추천 음료 팝업 창 표기 및 관련 메뉴 추천 기능 완료, 음성인식으로 동작하는 방법 진행중
    • 데이터 베이스 ( 완료 ) : 탬플릿에서 넘어온 데이터를 데이터 베이스에 저장 및 추천 메뉴 명에 맞추어 표기 및 페이지 네이션 기능 완료
    • 배포 ( 진행중 ) : docker를 이용한 django, redis, postgreSQL, celery를 생성 가능 확인, aws ec2를 이용한 배포 준비 단계 (인스턴스 생성), 기능이 완료 되는 데로 배포 단계 시작 예정
  • 배포 기능 완료시 추가 되어야 할 사항
    • 전체적인 코드 정리(필요 없는 코드 및 주석 삭제, 긴 코드는 따로 빼내어 정리) 및 기능별로 주석 설명 추가
    • admin-page 꾸미기
    • 점주 주문 대시보드 기능 추가
  • docker image를 이용하여 postgreSQL, redis, celery 를 구현하는 단계에서 오류가 발생
web-1            | python: can't open file '/app/manage.py': [Errno 2] No such file or directory-

→ 해당 파일이 분명이 존재하는 것을 확인 했으나 실행시 파일을 확인할 수 없다는 오류가 발생하는 문제가 해결이 되지 않아 다음 단계로 넘어갈 수 없는 상태

  • 일시적인 해결 방안으로 볼륨 코드 주석 처리 하여 실행하면 실행이 되는 것을 확인
services:
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
#    volumes:
#      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db
      - redis

  db:
    image: postgres:latest
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword

  redis:
    image: redis:latest

  celery_worker:
    build: .
    command: celery -A SilverLining worker -l info
#    volumes:
#      - .:/app
    depends_on:
      - redis

  celery_beat:
    build: .
    command: celery -A SilverLining beat -l info
#    volumes:
#      - .:/app
    depends_on:
      - redis

→ 그러나 이렇게 작성하면 변경된 수정사항을 최신화 할 수 없어 항상 up —build를 해야 하는 문제가 발생

  • 오류문제 해결 방안들→ 프로젝트파일 날리고 새로 clone
  • → dockerFile 내용 수정
  • → docker 삭제 후 설치

위의 방법들을 동원하여도 동일한 오류 발생

  • 문제 해결 : 기존 외부 드라이브 E:에 설치 되어 있던 프로젝트 파일을 c드라이브로 이동하여 docker를 생성하여 오류를 해결→ 변경 : C:/User/username/SilverLining/
  • → 기존 : E:/python/SilverLining/
  • 신한결튜터님 : docker 생성시 발생되는 오류를 분석하여 해당 오류원인이 파일위치에 있는 것으로 판단하여 경로를 수정해 보기로 건의
  • sd카드 폴더 밖으로 옮긴 후 실행 → 오류해결
  • 결론 : 주 드라이브가 아닌 외부의 드라이브에서 docker를 생성하게 되면 오류가 발생 할 경우가 생기므로 docker생성은 주 드라이브에서 생성하여야 한다는 것을 알게 됨
  • 추가 : 기존 번역을 위해서 필요한 django-translation을 사용하기 위에서 gettext를 docker에도 설치하기 위해서는 아래와 같은 명령어를 추가로 dockerFile에 입력해 주어야함
FROM python:3.8

# GNU gettext 설치
RUN apt-get update && apt-get install -y gettext

# 필요한 작업을 위한 작업 디렉토리 설정
WORKDIR /app

# 여기에 나머지 Dockerfile 명령어를 추가하세요.

# up 후에 입력 필요
docker-compose run --rm web bash

  • 도커로 서버를 실행하게 되면 마이그레이트 및 번역 등록을 시켜주어야 함
#docker로 실행 후 해주어야 하는 것

#마이그래이션
docker-compose run --rm web python manage.py migrate

# 번역 등록
docker-compose run --rm web python manage.py compilemessgae

# 번역시 필요
docker-compose run --rm web bash