jsmyung-datansoft / kokex

A Korean Keywords Extractor with Syntactic Analysis
MIT License
3 stars 1 forks source link

도커 이미지 빌드, 배포 속도 개선 #10

Closed jsmyung-datansoft closed 3 years ago

jsmyung-datansoft commented 3 years ago

빌드, 배포할때마다 mecab 설치하는데 시간이 많이 걸림 (#5와 연관 있음) Dockerfile, github action (package, upload) 확인 및 최적화 아이디어 필요 (중장기)

jintaekimmm commented 3 years ago

5 작업하시느라 고생 많으셨습니다!

mecab 설치 시간 오래걸리는 거에 대한 추가적인 아이디어를 덧붙이자면(웬지 아실 것 같지만) python + mecab 이미지(이하 베이스 이미지)만 따로 만들어서 관리하고 kokex 테스트, 빌드/배포시에는 베이스 이미지를 쓰시는 것도 괜찮을 것 같습니다

5 여기서 1. 으로 작성했던 게 베이스 이미지 만들었던거고

  1. 가 베이스 이미지 써서 kokex를 빌드했던 거라..

베이스 이미지는 따로 레포지토리 생성해서 관리하면 빌드도 별도로 관리하실 수 있을 거에요 제가 테스트한다고 이런식으로 https://github.com/99-66/mecab-base-py37 만들어서 베이스 생성했었거든요

한번 고려해보시는 것도 나쁘지 않을 것 같습니다

jsmyung-datansoft commented 3 years ago

5 작업하시느라 고생 많으셨습니다!

mecab 설치 시간 오래걸리는 거에 대한 추가적인 아이디어를 덧붙이자면(웬지 아실 것 같지만) python + mecab 이미지(이하 베이스 이미지)만 따로 만들어서 관리하고 kokex 테스트, 빌드/배포시에는 베이스 이미지를 쓰시는 것도 괜찮을 것 같습니다

5 여기서 1. 으로 작성했던 게 베이스 이미지 만들었던거고

  1. 가 베이스 이미지 써서 kokex를 빌드했던 거라..

베이스 이미지는 따로 레포지토리 생성해서 관리하면 빌드도 별도로 관리하실 수 있을 거에요 제가 테스트한다고 이런식으로 https://github.com/99-66/mecab-base-py37 만들어서 베이스 생성했었거든요

한번 고려해보시는 것도 나쁘지 않을 것 같습니다

@99-66 따로 레포지토리 생성하는것 너무 좋은 방법이구요! Dockerfile 에서는 이렇게 쓰는게 자연스러워 보입니다. 근데 github action 에서도 해당 베이스 이미지를 쓸 수 있으면 좋을 것 같아서요 ㅠ.ㅠ 혹시 관련해서도 조언 해주실수 있으실까요?

아마도 링크와 같이 container 구문을 써야하는 것 같은데 실제로 해본적이 없어서요.

jintaekimmm commented 3 years ago

@jsmyung-datansoft 부랴부랴 테스트 해보고 왔습니다

작성해두신 workflow 중에 python-package.yml 을 수정해서 테스트했습니다 테스트에 사용한 베이스 이미지는 https://github.com/99-66/mecab-base-py37 이걸 사용했구요

workflow는 이렇게 수정해서 pass했습니다 container 부분 추가했고, 처음에 python setup 부분은 삭제했습니다 테스트 결과는 링크 여기 보시면 될 것 같습니다

name: Python package

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    container: 6199/mecab-base-py37:latest
    steps:
    - name: Checkout Project
      uses: actions/checkout@main

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install black isort pytest
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi

    - name: Lint with isort and black
      run: |
        isort --check kokex
        black --check kokex

    - name: Test with pytest
      run: |
        bin/run_test.sh

참고한 링크들입니다

보시고 더 필요하신거 있으시면 말씀해주세요!

jsmyung-datansoft commented 3 years ago

@99-66 빌드 시간이 2분30초 정도에서 1분 정도로 많이 줄었네요!! 감사합니다.

한가지 고민인게, 현재 베이스 이미지는 docker 를 쓸 수 없어서 build, push 는 할 수 없더라고요. apt-get 에 docker.io 를 추가 설치해서 해결했습니다.

수정사항 반영하는김에 리포지토리를 새로 만드는게 좋아보여서 고민하다가 업데이트 했습니다. 업데이트 한 베이스 이미지는 https://github.com/jsmyung-datansoft/kokex-server-base 여기에 올려두었어요~

jintaekimmm commented 3 years ago

@99-66 빌드 시간이 2분30초 정도에서 1분 정도로 많이 줄었네요!! 감사합니다.

한가지 고민인게, 현재 베이스 이미지는 docker 를 쓸 수 없어서 build, push 는 할 수 없더라고요. apt-get 에 docker.io 를 추가 설치해서 해결했습니다.

수정사항 반영하는김에 리포지토리를 새로 만드는게 좋아보여서 고민하다가 업데이트 했습니다. 업데이트 한 베이스 이미지는 https://github.com/jsmyung-datansoft/kokex-server-base 여기에 올려두었어요~

@jsmyung-datansoft 오오 고생많으셨습니다! github action에 docker build, push 관련해서 쓸 수 있는 action들이 있더라구요. 링크 이거로 조금 테스트 해보고 말씀드릴게요. action에서 build, push를 따로 쓸 수 있으면 베이스 이미지에서 docker.io는 뺄 수 있을 것 같네요

jintaekimmm commented 3 years ago

금방 테스트 해본다는게 이래저래 치여서 이제야 확인했네요.. github action으로 테스트해봤는데 어쨋든 베이스 컨테이너에서 실행되는거 같애서, docker.io를 빼고 할 수는 없는 것 같아보여요 다른 방법이 더 있을지는 당장 딱! 생각나는게 없네요

혹시 나중에라도 더 좋은 방법이 있다면 남겨두겠습니다