diff --git a/Dockerfile b/Dockerfile index d78f30c1c7f979ffbc8db5119d67a94591262dde..17ee426a6147fb4c9ed9901abee4889c411398fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,24 +13,22 @@ ENV GIT_BRANCH_NAME=${GIT_BRANCH_NAME} \ WEBSERVICE=${WEBSERVICE} -RUN useradd \ - -c 'Docker image user' \ - -m \ - -r \ - -s /sbin/nologin \ - geomag_user \ - && mkdir -p /data \ - && chown -R geomag_user:geomag_user /data +# install packages into system python, when Pipfile changes +COPY Pipfile Pipfile.lock /geomag-algorithms/ +RUN cd /geomag-algorithms \ + && pipenv install --dev --pre --system -USER geomag_user +# install rest of library as editable +COPY . /geomag-algorithms +RUN cd /geomag-algorithms \ + && pip install -e . \ + # add data directory owned by usgs-user + && mkdir -p /data \ + && chown -R usgs-user:usgs-user /data -# install dependencies via pipenv +USER usgs-user WORKDIR /data -COPY Pipfile /data/ -RUN pipenv --site-packages install --dev --skip-lock -# copy library (ignores set in .dockerignore) -COPY . /geomag-algorithms # entrypoint needs double quotes ENTRYPOINT [ "/geomag-algorithms/docker-entrypoint.sh" ] diff --git a/Pipfile b/Pipfile index 074a95e9ef5e8815e9c6b68ea9ca1a5c68ff96f2..c3750f0e95324b1634ee8e98b469edad89b6539e 100644 --- a/Pipfile +++ b/Pipfile @@ -29,6 +29,7 @@ openpyxl = "*" pydantic = "*" sqlalchemy = "*" sqlalchemy-utc = "*" +typer = "*" typing = "*" typing-extensions = "*" uvicorn = {extras=["standard"], version="*"} diff --git a/Pipfile.lock b/Pipfile.lock index ecc8b256a098740e5a0575a26b9b82d2f7e0507a..365431ebcbefdb12a886a75356b8b47a0dbb46f2 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "b6b3f6007a0217e08bc3edc72ea081fac5139bbe48974af84faac7d7993b2ef5" + "sha256": "65a11d9d155cdecca0ed4d14ceead8df52ac6adff775f439b151f6ff7a1063ee" }, "pipfile-spec": 6, "requires": {}, @@ -727,6 +727,14 @@ "markers": "python_version >= '3.6'", "version": "==0.13.6" }, + "typer": { + "hashes": [ + "sha256:5455d750122cff96745b0dec87368f56d023725a7ebc9d2e54dd23dc86816303", + "sha256:ba58b920ce851b12a2d790143009fa00ac1d05b3ff3257061ff69dbdfc3d161b" + ], + "index": "pypi", + "version": "==0.3.2" + }, "typing": { "hashes": [ "sha256:1187fb9c82fd670d10aa07bbb6cfcfe4bdda42d6fab8d5134f04e8c4d0b71cc9", diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 665e82ecdf8082267663f7477ee1b80c40f6b821..7c05ad6ed9246666d9d9260d5a89bf58d8ace9b0 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,18 +1,16 @@ #! /bin/bash + # Environment variable to determine whether to start webservice export WEBSERVICE=${WEBSERVICE:-false} -# add geomagio to notebook path -export PYTHONPATH=/geomag-algorithms - if [ "${WEBSERVICE}" = "false" ]; then # run arguments as command, or bash prompt if no arguments exec "${@:-/bin/bash}" else # run gunicorn server for web service - exec pipenv run gunicorn \ + exec gunicorn \ --access-logfile - \ --bind 0.0.0.0:8000 \ --threads 2 \ diff --git a/docs/install_docker.md b/docs/install_docker.md index 02beede915bb904b4b3084e664176f4b9b1fd17a..f87b9193f6b6c49a44fb39c46c71dfe6416403c5 100644 --- a/docs/install_docker.md +++ b/docs/install_docker.md @@ -25,13 +25,8 @@ The following command creates and starts a container in the background. - Run an interactive python prompt - docker exec -it geomagio python -- Use the Jupyter Notebook server - - Check the output for a URL like this, that can be opened in a web browser: `http://127.0.0.1:8000/?token=...` - - Use the `geomag.py` command line interface docker exec -it geomagio geomag.py \