diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..97bc3ea --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,33 @@ +name: Build and push bento_drs + +on: + release: + types: [ published ] + pull_request: + branches: + - master + push: + branches: + - master + +jobs: + build-push: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Run Bento build action + uses: bento-platform/bento_build_action@v0.6 + with: + registry: ghcr.io + registry-username: ${{ github.actor }} + registry-password: ${{ secrets.GITHUB_TOKEN }} + image-name: ghcr.io/bento-platform/bento_drs + development-dockerfile: dev.Dockerfile + dockerfile: Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..863be2d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM ghcr.io/bento-platform/bento_base_image:python-debian-2022.10.11 + +# TODO: change USER +USER root + +RUN apt install gcc libffi-dev -y + +RUN echo "Building DRS in Production Mode"; +WORKDIR /drs/bento_drs +RUN mkdir /wes && \ + mkdir -p /drs/bento_drs/data/obj && \ + mkdir -p /drs/bento_drs/data/db; +COPY requirements.txt requirements.txt +RUN ["pip", "install", "-r", "requirements.txt"] +COPY . . + +# Run +WORKDIR /drs/bento_drs/chord_drs +COPY startup.sh ./startup.sh +CMD ["sh", "startup.sh"] diff --git a/chord_drs/package.cfg b/chord_drs/package.cfg index 941f38d..9bdb6c2 100644 --- a/chord_drs/package.cfg +++ b/chord_drs/package.cfg @@ -1,5 +1,5 @@ [package] name = chord_drs -version = 0.6.0 +version = 0.7.0 authors = Simon Chénard, David Lougheed author_emails = simon.chenard2@mcgill.ca, david.lougheed@mail.mcgill.ca diff --git a/dev.Dockerfile b/dev.Dockerfile new file mode 100644 index 0000000..5a801f3 --- /dev/null +++ b/dev.Dockerfile @@ -0,0 +1,18 @@ +FROM ghcr.io/bento-platform/bento_base_image:python-debian-2022.10.11 + +# TODO: change USER +USER root + +RUN apt install libffi-dev -y + +RUN echo "Building DRS in Development Mode"; +WORKDIR /drs/bento_drs +RUN mkdir /wes && \ + mkdir -p /drs/bento_drs/data/obj && \ + mkdir -p /drs/bento_drs/data/db; +COPY ./requirements.txt . +RUN ["pip", "install", "debugpy", "-r", "requirements.txt"] + +# Run +WORKDIR /drs/bento_drs/chord_drs +COPY startup.sh ./startup.sh \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 0ff087a..f7221ba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,7 +20,7 @@ flake8-polyfill==1.0.2 Flask==2.0.1 Flask-Migrate==3.1.0 Flask-SQLAlchemy==2.5.1 -greenlet==1.0.0 +greenlet==2.0.1 idna==2.10 iniconfig==1.1.1 itsdangerous==2.0.1 diff --git a/startup.sh b/startup.sh new file mode 100755 index 0000000..8eeff97 --- /dev/null +++ b/startup.sh @@ -0,0 +1,13 @@ +cd ../data; +mkdir -p db; +mkdir -p obj; + +cd ../chord_drs; +flask db upgrade; + +# call variant endpoint to trigger init +cd ..; + +# using 1 worker, multiple threads +# see https://stackoverflow.com/questions/38425620/gunicorn-workers-and-threads +gunicorn chord_drs.app:application -w 1 --threads $(expr 2 \* $(nproc --all) + 1) -b 0.0.0.0:5000