Namespace
tomhans2
Image / Tag
masterdataops:main-e33d2a9
Content Digest
sha256:f93e9a72579e81c88cc0022e6035ae6a88618fa438aa221b080c0d208eed7a0b
Details
Created

2025-11-12 10:23:27 UTC

Size

1.63 GB

Content Digest
Labels
  • description
    DataOps Prefect Worker with DuckDB, ML, NLP and Data Processing
  • io.prefect.python-version
    3.12
  • io.prefect.sqlite-version
    3.50.4
  • maintainer
    tom.han@tomhanfriends.com
  • org.label-schema.name
    prefect
  • org.label-schema.schema-version
    1.0
  • org.label-schema.url
    https://www.prefect.io/
  • org.opencontainers.image.created
    2025-11-12T10:21:21.331Z
  • org.opencontainers.image.description
  • org.opencontainers.image.licenses
  • org.opencontainers.image.revision
    e33d2a92f30920186579f451fa8aa704537957d3
  • org.opencontainers.image.source
    https://github.com/tomhans2/masterdataops
  • org.opencontainers.image.title
    masterdataops
  • org.opencontainers.image.url
    https://github.com/tomhans2/masterdataops
  • org.opencontainers.image.version
    main
  • python.version
    3.12
  • version
    0.1.0

Environment
DUCKDB_PATH

/duckdb/shared.db

GPG_KEY

7169605F62C751356D054A26A821E680E5FA6305

LANG

C.UTF-8

LC_ALL

C.UTF-8

LD_LIBRARY_PATH

/usr/local/lib

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PIP_DISABLE_PIP_VERSION_CHECK

1

PIP_NO_CACHE_DIR

1

PYTHONDONTWRITEBYTECODE

1

PYTHONOPTIMIZE

1

PYTHONPATH

/opt/prefect:

PYTHONUNBUFFERED

1

PYTHON_SHA256

fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4

PYTHON_VERSION

3.12.12

TZ

Asia/Shanghai

UV_COMPILE_BYTECODE

1

UV_LINK_MODE

copy

UV_SYSTEM_PYTHON

1


Layers

[#000] sha256:d7ecded7702a5dbf6d0f79a71edc34b534d08f3051980e2c948fba72db3197fc - 1.7% (28.4 MB)

[#001] sha256:1d96a644cf6c54ac43db46567eadbb2c200b0ef5416557440ba2106954f491ce - 0.07% (1.23 MB)

[#002] sha256:a4f564a4a58f8e9cd4ff1e0098405cb016a02b142eee4745a9a73f92076deff6 - 0.69% (11.6 MB)

[#003] sha256:31ac69cb4246e72a40eb76f4573038f94f6b6c97427a863162ecd8f3fe89e475 - 0.0% (248 Bytes)

[#004] sha256:653d13b518f09ed44372862e054b1041c96313f50d22d00343b5fe24ebf06edd - 0.0% (113 Bytes)

[#005] sha256:7be7f8c3153a66e90af8cf65efc32d3c7f4dd1b5cec690ae66b5b3667458f4a0 - 7.38% (123 MB)

[#006] sha256:bbd6d46411bd6c490c4a6ad2de451241a214aee326a0db6d629132264eeb30bb - 0.56% (9.4 MB)

[#007] sha256:73da5ff017166f61e7a87dd85fead6884d23734e1ef9e9ae641a4e8c93fb2a78 - 0.01% (174 KB)

[#008] sha256:0cc96a36b6a4857205f6b0dfbc85a98c1fd265d830bede59f3e9ec5e89862cb7 - 0.17% (2.83 MB)

[#009] sha256:0fc7a0f3e8b606a787161815b1037479c0c9c42cc530494f0b45003e20277acf - 0.0% (372 Bytes)

[#010] sha256:fa724a88adec36b3b63d2e7b8d202a76eb671247ef7825e8297ecf673982831b - 0.0% (3.96 KB)

[#011] sha256:48d1d9854f6def34280aa583731af859337250e8c2d9542301a9fb3b6ac82045 - 0.97% (16.1 MB)

[#012] sha256:e4caf1f3b051721322ccb2f4b44b45c30c08e64c3a41421dd24c4fd7ac98c869 - 0.32% (5.38 MB)

[#013] sha256:3726dae7e8149ed3a5bca6b6a33e7a508fa63ff9b6925ab853357ba2ae3c382b - 4.99% (83.2 MB)

[#014] sha256:a1a96334e2380ea9e45c774bb6f5bc640e444b03987a84a7a62919849631f907 - 0.0% (849 Bytes)

[#015] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#016] sha256:8732ec5e39cf059fdc8141712c80fce4968044c581f721657a8affc402f244a1 - 0.06% (1.07 MB)

[#017] sha256:3748031917733340cb7767780f1ce54954b56eb379bd6f1597b92956ae3eb975 - 0.0% (419 Bytes)

[#018] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#019] sha256:543ad5ec11b0b0dc154b75b4feaf23549aa7eff5344f2d2ab674b8366bd1af26 - 82.28% (1.34 GB)

[#020] sha256:1bb6035d3e61df10da2988ef32fedfd2b25282e28485748ea132853217cb6356 - 0.79% (13.1 MB)

[#021] sha256:50bf510656629d79c185b6b4dd94824c3ce8ce8b5e1c0a4906771c1814b309af - 0.0% (3.17 KB)

[#022] sha256:715583f141703bfe0096636e82ebf87f942a8f9fac44d51c1d658d25dd30560f - 0.0% (1012 Bytes)

[#023] sha256:312a62b50b9bb6c6d85a7ae3f2a81a6a9615d6eaef529006d684c9303a242f39 - 0.0% (1.14 KB)


History
2025-11-03 20:44:10 UTC (debuerreotype 0.16)

# debian.sh --arch 'amd64' out/ 'trixie' '@1762202650'

2025-11-04 04:23:01 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2025-11-04 04:23:01 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2025-11-04 04:23:01 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit

2025-11-04 04:23:01 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305

2025-11-04 04:23:01 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12.12

2025-11-04 04:23:01 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4

2025-11-04 04:32:13 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:--Wl},--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit

2025-11-04 04:32:14 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit

2025-11-04 04:32:14 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ARG PYTHON_VERSION=3.12

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ARG SQLITE_VERSION=3.50.4

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ARG SQLITE_YEAR=2025

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ARG SQLITE_FILE_VERSION=3500400

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ENV LC_ALL=C.UTF-8

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ENV UV_COMPILE_BYTECODE=1

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ENV UV_LINK_MODE=copy

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ENV UV_SYSTEM_PYTHON=1

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

ENV LD_LIBRARY_PATH=/usr/local/lib

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

LABEL maintainer=help@prefect.io io.prefect.python-version=3.12 io.prefect.sqlite-version=3.50.4 org.label-schema.schema-version=1.0 org.label-schema.name=prefect org.label-schema.url=https://www.prefect.io/

2025-11-10 17:43:52 UTC (buildkit.dockerfile.v0)

WORKDIR /opt/prefect

2025-11-10 17:44:24 UTC (buildkit.dockerfile.v0)

RUN |4 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 SQLITE_YEAR=2025 SQLITE_FILE_VERSION=3500400 /bin/sh -c apt-get update && apt-get install --no-install-recommends -y tini=0.19.* build-essential git>=1:2.47.3 && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit

2025-11-10 17:46:06 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/libsqlite3* /usr/local/lib/ # buildkit

2025-11-10 17:46:06 UTC (buildkit.dockerfile.v0)

COPY /usr/local/include/sqlite3*.h /usr/local/include/ # buildkit

2025-11-10 17:46:06 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/sqlite3 /usr/local/bin/ # buildkit

2025-11-10 17:46:06 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/pkgconfig/sqlite3.pc /usr/local/lib/pkgconfig/ # buildkit

2025-11-10 17:46:07 UTC (buildkit.dockerfile.v0)

RUN |4 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 SQLITE_YEAR=2025 SQLITE_FILE_VERSION=3500400 /bin/sh -c ldconfig # buildkit

2025-11-10 17:46:07 UTC (buildkit.dockerfile.v0)

COPY /uv /bin/uv # buildkit

2025-11-10 17:46:33 UTC (buildkit.dockerfile.v0)

COPY /opt/prefect/dist ./dist # buildkit

2025-11-10 17:46:33 UTC (buildkit.dockerfile.v0)

ARG PREFECT_EXTRAS=[redis,client,otel]

2025-11-10 17:46:52 UTC (buildkit.dockerfile.v0)

RUN |5 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 SQLITE_YEAR=2025 SQLITE_FILE_VERSION=3500400 PREFECT_EXTRAS=[redis,client,otel] /bin/sh -c uv pip install "./dist/prefect.tar.gz${PREFECT_EXTRAS:-""}" && rm -rf dist/ # buildkit

2025-11-10 17:46:52 UTC (buildkit.dockerfile.v0)

RUN |5 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 SQLITE_YEAR=2025 SQLITE_FILE_VERSION=3500400 PREFECT_EXTRAS=[redis,client,otel] /bin/sh -c uv pip uninstall setuptools # buildkit

2025-11-10 17:46:52 UTC (buildkit.dockerfile.v0)

ARG EXTRA_PIP_PACKAGES=

2025-11-10 17:46:52 UTC (buildkit.dockerfile.v0)

RUN |6 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 SQLITE_YEAR=2025 SQLITE_FILE_VERSION=3500400 PREFECT_EXTRAS=[redis,client,otel] EXTRA_PIP_PACKAGES= /bin/sh -c [ -z "${EXTRA_PIP_PACKAGES:-""}" ] || uv pip install "${EXTRA_PIP_PACKAGES}" # buildkit

2025-11-10 17:46:58 UTC (buildkit.dockerfile.v0)

RUN |6 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 SQLITE_YEAR=2025 SQLITE_FILE_VERSION=3500400 PREFECT_EXTRAS=[redis,client,otel] EXTRA_PIP_PACKAGES= /bin/sh -c prefect version # buildkit

2025-11-10 17:46:58 UTC (buildkit.dockerfile.v0)

COPY scripts/entrypoint.sh ./entrypoint.sh # buildkit

2025-11-10 17:46:58 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/usr/bin/tini" "-g" "--" "/opt/prefect/entrypoint.sh"]

2025-11-12 02:26:13 UTC (buildkit.dockerfile.v0)

LABEL maintainer=tom.han@tomhanfriends.com

2025-11-12 02:26:13 UTC (buildkit.dockerfile.v0)

LABEL description=DataOps Prefect Worker with DuckDB, ML, NLP and Data Processing

2025-11-12 02:26:13 UTC (buildkit.dockerfile.v0)

LABEL version=0.1.0

2025-11-12 02:26:13 UTC (buildkit.dockerfile.v0)

LABEL python.version=3.12

2025-11-12 02:26:13 UTC (buildkit.dockerfile.v0)

ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 DUCKDB_PATH=/duckdb/shared.db TZ=Asia/Shanghai PYTHONOPTIMIZE=1 PYTHONPATH=/opt/prefect:

2025-11-12 02:26:13 UTC (buildkit.dockerfile.v0)

WORKDIR /opt/prefect

2025-11-12 09:30:58 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages # buildkit

2025-11-12 09:31:00 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin /usr/local/bin # buildkit

2025-11-12 09:31:00 UTC (buildkit.dockerfile.v0)

COPY pyproject.toml ./ # buildkit

2025-11-12 09:31:00 UTC (buildkit.dockerfile.v0)

COPY init-duckdb.py /usr/local/bin/init-duckdb.py # buildkit

2025-11-12 10:23:27 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -ex && mkdir -p /duckdb /tmp/prefect /root/.prefect && chmod +x /usr/local/bin/init-duckdb.py && python -c "import sys; print(f'Python: {sys.version}'); import duckdb; print(f'DuckDB: {duckdb.__version__}'); import prefect; print(f'Prefect: {prefect.__version__}')" && rm -rf /root/.cache /tmp/* /var/tmp/* # buildkit

2025-11-12 10:23:27 UTC (buildkit.dockerfile.v0)

HEALTHCHECK &{["CMD-SHELL" "python -c \"import duckdb; import prefect; import pandas; import boto3; print('✓ Health check passed')\" || exit 1"] "30s" "10s" "10s" "0s" '\x03'}

2025-11-12 10:23:27 UTC (buildkit.dockerfile.v0)

CMD ["prefect" "worker" "start" "--pool" "default-pool" "--type" "process"]

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete