diff --git a/.dockerignore b/.dockerignore index 8c7d01e3..bb381ce4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,3 +8,5 @@ venv/ .git/ test_*.py .github/ +Dockerfile +*.Dockerfile diff --git a/.gitignore b/.gitignore index 331dca0c..9ef9d55c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ __pycache__/ .idea/ .pytest_cache/ .env* +dist/ !.env-template rdf/ diff --git a/Dockerfile b/Dockerfile index c3a97fe9..a34125ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,8 +28,8 @@ WORKDIR /app COPY . . RUN poetry build -RUN python -m venv --system-site-packages /opt/venv -RUN pip install --no-cache-dir dist/*.whl +RUN python3 -m venv --system-site-packages ${VIRTUAL_ENV} +RUN ${VIRTUAL_ENV}/bin/pip3 install --no-cache-dir dist/*.whl # # Final @@ -50,6 +50,7 @@ RUN apk update && \ bash WORKDIR /app -COPY . . +# prez module is already built as a package and installed in $VIRTUAL_ENV as a library +COPY main.py pyproject.toml ./ ENTRYPOINT uvicorn prez.app:app --host=${HOST:-0.0.0.0} --port=${PORT:-8000} --proxy-headers \ No newline at end of file diff --git a/prez/config.py b/prez/config.py index db02415c..88320463 100644 --- a/prez/config.py +++ b/prez/config.py @@ -67,9 +67,24 @@ def get_version(cls, values): values["prez_version"] = version if version is None or version == "": - values["prez_version"] = toml.load( - Path(Path(__file__).parent.parent) / "pyproject.toml" - )["tool"]["poetry"]["version"] + possible_locations = ( + # dir above /prez, this is present in dev environments + # this is also used by derived projects to override the app version + Path(__file__).parent.parent, + # _inside_ /prez module, this is present in wheel builds + Path(__file__).parent, + ) + p: Path + for p in possible_locations: + if (p / "pyproject.toml").exists(): + values["prez_version"] = toml.load(p / "pyproject.toml")["tool"][ + "poetry" + ]["version"] + break + else: + raise RuntimeError( + "PREZ_VERSION not set, and cannot find a pyproject.toml to extract the version." + ) return values diff --git a/pyproject.toml b/pyproject.toml index 91363a86..0d1d52ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,6 +3,20 @@ name = "prez" version = "0.1.0.dev0" description = "A python application for displaying linked data on the web" authors = ["Jamie Feiss ", "Nicholas Car ", "David Habgood "] +packages = [ + { include = "prez" }, + { include = "pyproject.toml", format = "wheel", to="prez" }, +] +include = [ + { path = "./*.md", format = "sdist" }, + { path = "LICENSE", format = "sdist" }, + { path = "demo", format = "sdist" }, + { path = "dev", format = "sdist" }, + { path = "tests", format = "sdist" }, + { path = "poetry.lock", format = "sdist" }, + { path = "./*.whl", format = "sdist" }, + { path = "*.toml", format = "sdist" } +] [tool.poetry.dependencies] python = "^3.11"