From 78b531ad8cc3caa761aefbd6607d813a9f8e0623 Mon Sep 17 00:00:00 2001 From: ducklet Date: Wed, 29 Nov 2023 18:01:01 +0100 Subject: [PATCH] add scripts to build & run with Docker Or set DOCKER_BIN=podman to use Podman. --- .gitignore | 2 +- poetry.lock | 2 +- pyproject.toml | 9 ++++++++- scripts/docker-build | 25 +++++++++++++++++++++++++ scripts/docker-run | 18 ++++++++++++++++++ 5 files changed, 53 insertions(+), 3 deletions(-) create mode 100755 scripts/docker-build create mode 100755 scripts/docker-run diff --git a/.gitignore b/.gitignore index ba432e1..578559d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,5 @@ *.pyc /.cache /.pytest_cache +/build /data/* -/requirements.txt diff --git a/poetry.lock b/poetry.lock index df69612..bbd1764 100644 --- a/poetry.lock +++ b/poetry.lock @@ -686,4 +686,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "fc07028820963701634eb55b42ea12962fd7c6fc25ef76ddadf30f2c74544b5f" +content-hash = "ba28f3acc8701a53b35b1c8ea15169e151c74c277bad095f52e19e3f65be9ed7" diff --git a/pyproject.toml b/pyproject.toml index f7c1b6b..417764e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "unwind" -version = "0.1.0" +version = "0" description = "" authors = ["ducklet "] license = "LOL" @@ -15,6 +15,13 @@ uvicorn = "^0.23" httpx = "^0.24" sqlalchemy = {version = "^2.0", extras = ["aiosqlite"]} +[tool.poetry.group.build.dependencies] +# When we run poetry export, typing-extensions is a transient dependency via +# sqlalchemy, but the hash won't be included in the requirements.txt. +# By making it a direct dependency we can fix this issue, otherwise this could +# be removed. +typing-extensions = "*" + [tool.poetry.group.dev] optional = true diff --git a/scripts/docker-build b/scripts/docker-build new file mode 100755 index 0000000..8f4c093 --- /dev/null +++ b/scripts/docker-build @@ -0,0 +1,25 @@ +#!/bin/sh -eu + +: "${DOCKER_BIN:=docker}" + +cd "$RUN_DIR" + +builddir=build + +[ -z "${DEBUG:-}" ] || set -x + +mkdir -p "$builddir" + +poetry export \ + --with=build \ + --output="$builddir"/requirements.txt + +githash=$(git rev-parse --short HEAD) +today=$(date -u '+%Y.%m.%d') +version="${today}+${githash}" +echo "$version" >"$builddir"/version + +$DOCKER_BIN build \ + --pull \ + --tag "code.dumpr.org/ducklet/unwind":"$version" \ + . diff --git a/scripts/docker-run b/scripts/docker-run new file mode 100755 index 0000000..407b199 --- /dev/null +++ b/scripts/docker-run @@ -0,0 +1,18 @@ +#!/bin/sh -eu + +: "${DOCKER_BIN:=docker}" + +cd "$RUN_DIR" + +[ -z "${DEBUG:-}" ] || set -x + +version=$(cat build/version) + +$DOCKER_BIN run \ + --init \ + -it --rm \ + --read-only \ + --memory '500m' \ + --publish 127.0.0.1:8000:8000 \ + --volume "$RUN_DIR"/data:/data \ + "code.dumpr.org/ducklet/unwind":"$version"