refactor: use .python-version for docker build
This commit is contained in:
parent
d385860ca9
commit
06e60fb212
4 changed files with 45 additions and 10 deletions
|
|
@ -1,4 +1,6 @@
|
||||||
|
**/__pycache__
|
||||||
*.local
|
*.local
|
||||||
|
.*
|
||||||
/data
|
/data
|
||||||
/tests
|
/tests
|
||||||
/unwind-ui
|
/unwind-ui
|
||||||
|
|
|
||||||
10
Dockerfile
10
Dockerfile
|
|
@ -1,4 +1,6 @@
|
||||||
FROM docker.io/library/python:3.12-alpine
|
ARG PYTHON_VERSION
|
||||||
|
|
||||||
|
FROM docker.io/library/python:${PYTHON_VERSION}-alpine
|
||||||
|
|
||||||
RUN apk update --no-cache \
|
RUN apk update --no-cache \
|
||||||
&& apk upgrade --no-cache \
|
&& apk upgrade --no-cache \
|
||||||
|
|
@ -9,14 +11,16 @@ RUN addgroup -g 10001 py \
|
||||||
|
|
||||||
WORKDIR /var/app
|
WORKDIR /var/app
|
||||||
|
|
||||||
COPY requirements.txt ./
|
COPY build/requirements.txt ./
|
||||||
|
|
||||||
RUN pip install --no-cache-dir --upgrade \
|
RUN pip install --no-cache-dir --upgrade \
|
||||||
--requirement requirements.txt
|
--requirement requirements.txt
|
||||||
|
|
||||||
USER 10000:10001
|
USER 10000:10001
|
||||||
|
|
||||||
COPY . ./
|
COPY run ./
|
||||||
|
COPY scripts ./scripts
|
||||||
|
COPY unwind ./unwind
|
||||||
|
|
||||||
ENV UNWIND_DATA="/data"
|
ENV UNWIND_DATA="/data"
|
||||||
VOLUME $UNWIND_DATA
|
VOLUME $UNWIND_DATA
|
||||||
|
|
|
||||||
|
|
@ -6,20 +6,41 @@ cd "$RUN_DIR"
|
||||||
|
|
||||||
builddir=build
|
builddir=build
|
||||||
|
|
||||||
|
_latest_python_version() {
|
||||||
|
filter="$1"
|
||||||
|
filter_regex=$(echo "$filter" | sed 's/\./\\\\./')
|
||||||
|
curl -sfL https://api.github.com/repos/python/cpython/git/refs/tags \
|
||||||
|
| jq -r 'map(select(.ref | test("^refs/tags/v?'"$filter_regex"'($|\\.)")) | .ref | match("refs/tags/v?(.*)").captures[0].string)[]' \
|
||||||
|
| grep -xE '[.0-9]+' \
|
||||||
|
| sort --version-sort \
|
||||||
|
| tail -n 1
|
||||||
|
}
|
||||||
|
|
||||||
[ -z "${DEBUG:-}" ] || set -x
|
[ -z "${DEBUG:-}" ] || set -x
|
||||||
|
|
||||||
mkdir -p "$builddir"
|
mkdir -p "$builddir"
|
||||||
|
|
||||||
|
python_version_filter=$(cat .python-version)
|
||||||
|
python_version=$(_latest_python_version "$python_version_filter")
|
||||||
|
|
||||||
|
if [ -z "$python_version" ]; then
|
||||||
|
echo >&2 "No Python version found matching the filter: $python_version_filter"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
githash_short=$(git rev-parse --short HEAD)
|
||||||
|
githash_long=$(git rev-parse HEAD)
|
||||||
|
version="$githash_short"
|
||||||
|
echo "$version" >"$builddir"/version
|
||||||
|
|
||||||
poetry export \
|
poetry export \
|
||||||
--with=build \
|
--with=build \
|
||||||
--output="$builddir"/requirements.txt
|
--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 \
|
$DOCKER_BIN build \
|
||||||
--pull \
|
--pull \
|
||||||
--tag "code.dumpr.org/ducklet/unwind":"$version" \
|
--build-arg="PYTHON_VERSION=$python_version" \
|
||||||
|
--label="python.version=$python_version" \
|
||||||
|
--label="git.hash=$githash_long" \
|
||||||
|
--tag="code.dumpr.org/ducklet/unwind":"$version" \
|
||||||
.
|
.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh -eu
|
#!/bin/sh -eu
|
||||||
|
|
||||||
: "${DOCKER_BIN:=docker}"
|
: "${DOCKER_BIN:=docker}"
|
||||||
|
: "${UNWIND_PORT:=8097}"
|
||||||
|
|
||||||
cd "$RUN_DIR"
|
cd "$RUN_DIR"
|
||||||
|
|
||||||
|
|
@ -8,11 +9,18 @@ cd "$RUN_DIR"
|
||||||
|
|
||||||
version=$(cat build/version)
|
version=$(cat build/version)
|
||||||
|
|
||||||
|
localhost=127.0.0.1
|
||||||
|
localport=8000
|
||||||
|
netloc="$localhost:$localport"
|
||||||
|
|
||||||
|
echo >&2 "Unwind will be available on http://$netloc/
|
||||||
|
"
|
||||||
|
|
||||||
$DOCKER_BIN run \
|
$DOCKER_BIN run \
|
||||||
--init \
|
--init \
|
||||||
-it --rm \
|
-it --rm \
|
||||||
--read-only \
|
--read-only \
|
||||||
--memory '500m' \
|
--memory '500m' \
|
||||||
--publish 127.0.0.1:8000:8000 \
|
--publish "$netloc":"$UNWIND_PORT" \
|
||||||
--volume "$RUN_DIR"/data:/data \
|
--volume "$RUN_DIR"/data:/data \
|
||||||
"code.dumpr.org/ducklet/unwind":"$version"
|
"code.dumpr.org/ducklet/unwind":"$version"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue