diff --git a/.github/workflows/deploy-fastapi.yml b/.github/workflows/deploy-fastapi.yml index 6a8b26ba..a05caa39 100644 --- a/.github/workflows/deploy-fastapi.yml +++ b/.github/workflows/deploy-fastapi.yml @@ -42,6 +42,8 @@ jobs: echo "S3_UPLOAD_ENABLED=${{ secrets.S3_UPLOAD_ENABLED }}" >> .env.prod echo "IMAGE_DOWNLOAD_TIMEOUT=${{ secrets.IMAGE_DOWNLOAD_TIMEOUT }}" >> .env.prod echo "MAX_IMAGE_SIZE_MB=${{ secrets.MAX_IMAGE_SIZE_MB }}" >> .env.prod + echo "MECAB_PATH=${{ secrets.MECAB_PATH }}" >> .env.prod + echo "MECABRC=${{ secrets.MECABRC }}" >> .env.prod - name: Set repo lowercase run: echo "REPO_LC=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV diff --git a/apps/pre-processing-service/Dockerfile b/apps/pre-processing-service/Dockerfile index 6ecb09c8..13af476a 100644 --- a/apps/pre-processing-service/Dockerfile +++ b/apps/pre-processing-service/Dockerfile @@ -49,9 +49,20 @@ RUN wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd6 RUN apt-get update && apt-get install -y --no-install-recommends \ mecab \ libmecab-dev \ - mecab-ipadic-utf8 \ + wget \ + build-essential \ && rm -rf /var/lib/apt/lists/* +# 한국어 사전 수동 설치 +RUN cd /tmp && \ + wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz && \ + tar -zxf mecab-ko-dic-2.1.1-20180720.tar.gz && \ + cd mecab-ko-dic-2.1.1-20180720 && \ + ./configure && \ + make && \ + make install && \ + cd / && rm -rf /tmp/mecab-ko-dic-* + # /opt/venv 복사 COPY --from=builder /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" @@ -59,9 +70,5 @@ ENV PATH="/opt/venv/bin:$PATH" # 앱 소스 COPY . . - -# 환경변수로 MeCab 경로 지정 -ENV MECAB_PATH=/usr/lib/mecab/dic/ipadic - # (권장 대안) 코드에서 uvicorn import 안 하고 프로세스 매니저로 실행하려면: ENTRYPOINT ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "app.main:app", "-b", "0.0.0.0:8000", "--timeout", "120"] \ No newline at end of file diff --git a/apps/pre-processing-service/app/utils/keyword_matcher.py b/apps/pre-processing-service/app/utils/keyword_matcher.py index 6806b140..3cb5f0b3 100644 --- a/apps/pre-processing-service/app/utils/keyword_matcher.py +++ b/apps/pre-processing-service/app/utils/keyword_matcher.py @@ -22,6 +22,7 @@ def __init__(self): if MECAB_AVAILABLE: try: # 환경변수 MECAB_PATH가 있으면 사용, 없으면 기본값 + os.environ["MECABRC"] = os.getenv("MECABRC") mecab_path = os.getenv("MECAB_PATH") if mecab_path: self.mecab = MeCab.Tagger(f"-d {mecab_path}")