Namespace
langgenius
Image / Tag
dify-api:c1de8f75ca30ef87084402a41c0a49f15f35e647
Content Digest
sha256:81636b4e43fa68ee94705075983976f5b2b31cdf4f34670be841aa6f7aa24d19
Details
Created

2026-01-30 12:51:39 UTC

Size

837 MB

Content Digest
Labels
  • org.opencontainers.image.created
    2026-01-30T12:50:27.002Z
  • org.opencontainers.image.description
    Production-ready platform for agentic workflow development.
  • org.opencontainers.image.licenses
    NOASSERTION
  • org.opencontainers.image.revision
    c1de8f75ca30ef87084402a41c0a49f15f35e647
  • org.opencontainers.image.source
    https://github.com/langgenius/dify
  • org.opencontainers.image.title
    dify
  • org.opencontainers.image.url
    https://github.com/langgenius/dify
  • org.opencontainers.image.version
    deploy-agent-dev

Environment
APP_WEB_URL

http://127.0.0.1:3000

COMMIT_SHA

c1de8f75ca30ef87084402a41c0a49f15f35e647

CONSOLE_API_URL

http://127.0.0.1:5001

CONSOLE_WEB_URL

http://127.0.0.1:3000

DEPLOY_ENV

PRODUCTION

EDITION

SELF_HOSTED

FLASK_APP

app.py

GPG_KEY

7169605F62C751356D054A26A821E680E5FA6305

LANG

en_US.UTF-8

LC_ALL

en_US.UTF-8

NLTK_DATA

/usr/local/share/nltk_data

PATH

/app/api/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHONIOENCODING

utf-8

PYTHON_SHA256

fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4

PYTHON_VERSION

3.12.12

SERVICE_API_URL

http://127.0.0.1:5001

TIKTOKEN_CACHE_DIR

/app/api/.tiktoken_cache

TZ

UTC

UV_VERSION

0.8.9

VIRTUAL_ENV

/app/api/.venv


Layers

[#000] sha256:c02d17997ce3d2c82e082235ea0b5152d06ee659c4e2fabcf1e0079312f1bcde - 3.22% (26.9 MB)

[#001] sha256:249775a55ac88b6cd966b6091f6385a5441764203f83d7f90c63e210b15ac370 - 0.4% (3.35 MB)

[#002] sha256:a6608f38bf8f12e05aafc698770f5f029485361be2d985ab1af2ddc516279ee6 - 1.56% (13 MB)

[#003] sha256:08a6925e2259fcb4a2bc24d31b2a62cdd24f2fee20ba0e4241ac37cacf1ef5cb - 0.0% (249 Bytes)

[#004] sha256:83d675c7d5220e345a2f1ed62eb072a8f73fd792cc408710337eab228a007b36 - 0.0% (109 Bytes)

[#005] sha256:ce5077d4ae891ba03c52991a5a12bc2f4e911b9a8b51a5773e4530eb13713d37 - 2.64% (22.1 MB)

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

[#007] sha256:db43bb7824515f703df7743bdce667a8eac89ee795c54a0f3a3ddbe982cccdbe - 0.0% (1.11 KB)

[#008] sha256:d2c8105711035b0622bf6e7409d5a21a3de74916553ea70fbb266b6422aaa792 - 18.51% (155 MB)

[#009] sha256:0da2db626a6daf3316a91b7fbbdce164ead0c3d014bf0fa53119cbb4d1724951 - 65.82% (551 MB)

[#010] sha256:198c568e97f2cbdd455c5cf96344c1081b944b2d7b096cd06c12348cd8b26178 - 5.4% (45.2 MB)

[#011] sha256:7d064ede65e5cb99ba712853968f5feaea4b05b9cc3a80d864667b1b4f79f7da - 0.13% (1.07 MB)

[#012] sha256:a58d84bad0c440f90b6d1f6bb45a2ca27ace58c943e6921aa7d5f2109e4a5039 - 2.33% (19.5 MB)

[#013] sha256:69b33d5fe43dce293d0df987729b1badd53e23ba2c61d9ec4d37045208aaa3fc - 0.0% (1.9 KB)


History
2026-01-12 00:00:00 UTC (debuerreotype 0.17)

# debian.sh --arch 'amd64' out/ 'bookworm' '@1768176000'

2026-01-13 03:06:39 UTC (buildkit.dockerfile.v0)

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

2026-01-13 03:06:39 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2026-01-13 03:06:39 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit

2026-01-13 03:06:39 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305

2026-01-13 03:06:39 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12.12

2026-01-13 03:06:39 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4

2026-01-13 03:15:56 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; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit

2026-01-13 03:15:56 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

2026-01-13 03:15:56 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2026-01-30 08:05:47 UTC (buildkit.dockerfile.v0)

WORKDIR /app/api

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV UV_VERSION=0.8.9

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c pip install --no-cache-dir uv==${UV_VERSION} # buildkit

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV FLASK_APP=app.py

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV EDITION=SELF_HOSTED

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV DEPLOY_ENV=PRODUCTION

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV CONSOLE_API_URL=http://127.0.0.1:5001

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV CONSOLE_WEB_URL=http://127.0.0.1:3000

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV SERVICE_API_URL=http://127.0.0.1:5001

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV APP_WEB_URL=http://127.0.0.1:3000

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

EXPOSE [5001/tcp]

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV TZ=UTC

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV LANG=en_US.UTF-8

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV LC_ALL=en_US.UTF-8

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ENV PYTHONIOENCODING=utf-8

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

WORKDIR /app/api

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ARG dify_uid=1001

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ARG NODE_MAJOR=22

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ARG NODE_PACKAGE_VERSION=22.21.0-1nodesource1

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

ARG NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c groupadd -r -g ${dify_uid} dify && useradd -r -u ${dify_uid} -g ${dify_uid} -s /bin/bash dify && chown -R dify:dify /app # buildkit

2026-01-30 08:06:10 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates curl gnupg && mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key -o /tmp/nodesource.gpg && gpg --show-keys --with-colons /tmp/nodesource.gpg | awk -F: '/^fpr:/ {print $10}' | grep -Fx "${NODESOURCE_KEY_FPR}" && gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg /tmp/nodesource.gpg && rm -f /tmp/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" > /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install -y --no-install-recommends nodejs=${NODE_PACKAGE_VERSION} libgmp-dev libmpfr-dev libmpc-dev expat libldap-2.5-0=2.5.13+dfsg-5 perl libsqlite3-0=3.40.1-2+deb12u2 zlib1g=1:1.2.13.dfsg-1 fonts-noto-cjk media-types libmagic1 && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* # buildkit

2026-01-30 08:06:10 UTC (buildkit.dockerfile.v0)

ENV VIRTUAL_ENV=/app/api/.venv

2026-01-30 12:51:35 UTC (buildkit.dockerfile.v0)

COPY --chown=dify:dify /app/api/.venv /app/api/.venv # buildkit

2026-01-30 12:51:35 UTC (buildkit.dockerfile.v0)

ENV PATH=/app/api/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-01-30 12:51:38 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c mkdir -p /usr/local/share/nltk_data && NLTK_DATA=/usr/local/share/nltk_data python -c "import nltk; from unstructured.nlp.tokenize import download_nltk_packages; nltk.download('punkt'); nltk.download('averaged_perceptron_tagger'); nltk.download('stopwords'); download_nltk_packages()" && chmod -R 755 /usr/local/share/nltk_data # buildkit

2026-01-30 12:51:38 UTC (buildkit.dockerfile.v0)

ENV TIKTOKEN_CACHE_DIR=/app/api/.tiktoken_cache

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c python -c "import tiktoken; tiktoken.encoding_for_model('gpt2')" && chown -R dify:dify ${TIKTOKEN_CACHE_DIR} # buildkit

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

COPY --chown=dify:dify . /app/api/ # buildkit

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

COPY --chown=dify:dify --chmod=755 docker/entrypoint.sh /entrypoint.sh # buildkit

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

ARG COMMIT_SHA=c1de8f75ca30ef87084402a41c0a49f15f35e647

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

ENV COMMIT_SHA=c1de8f75ca30ef87084402a41c0a49f15f35e647

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

ENV NLTK_DATA=/usr/local/share/nltk_data

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

USER dify

2026-01-30 12:51:39 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/bin/bash" "/entrypoint.sh"]

Details
Created

2026-01-30 12:52:03 UTC

Size

813 MB

Content Digest
Labels
  • org.opencontainers.image.created
    2026-01-30T12:50:32.404Z
  • org.opencontainers.image.description
    Production-ready platform for agentic workflow development.
  • org.opencontainers.image.licenses
    NOASSERTION
  • org.opencontainers.image.revision
    c1de8f75ca30ef87084402a41c0a49f15f35e647
  • org.opencontainers.image.source
    https://github.com/langgenius/dify
  • org.opencontainers.image.title
    dify
  • org.opencontainers.image.url
    https://github.com/langgenius/dify
  • org.opencontainers.image.version
    deploy-agent-dev

Environment
APP_WEB_URL

http://127.0.0.1:3000

COMMIT_SHA

c1de8f75ca30ef87084402a41c0a49f15f35e647

CONSOLE_API_URL

http://127.0.0.1:5001

CONSOLE_WEB_URL

http://127.0.0.1:3000

DEPLOY_ENV

PRODUCTION

EDITION

SELF_HOSTED

FLASK_APP

app.py

GPG_KEY

7169605F62C751356D054A26A821E680E5FA6305

LANG

en_US.UTF-8

LC_ALL

en_US.UTF-8

NLTK_DATA

/usr/local/share/nltk_data

PATH

/app/api/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHONIOENCODING

utf-8

PYTHON_SHA256

fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4

PYTHON_VERSION

3.12.12

SERVICE_API_URL

http://127.0.0.1:5001

TIKTOKEN_CACHE_DIR

/app/api/.tiktoken_cache

TZ

UTC

UV_VERSION

0.8.9

VIRTUAL_ENV

/app/api/.venv


Layers

[#000] sha256:33bdc9671af8942d96d2f78f67aeec06580065dde1272decac3732689ec7c0e8 - 3.3% (26.8 MB)

[#001] sha256:4ae0f19ca418b0a15b934de535e88f8e25eba7518487f50d48b2ce849462ce86 - 0.39% (3.19 MB)

[#002] sha256:c3658e52572d4d43a2e57dd875bd5b19c5c713ddc1eeff8c94b05145a5573f1d - 1.59% (13 MB)

[#003] sha256:b81775473d6e9d5b65febaa97ae4628da4eaacc135f3345a9d56adf631fda9e3 - 0.0% (250 Bytes)

[#004] sha256:83d675c7d5220e345a2f1ed62eb072a8f73fd792cc408710337eab228a007b36 - 0.0% (109 Bytes)

[#005] sha256:d2aafccffad81cae95f007c07badfaf14e737cf933696486cc969a9a718822dd - 2.62% (21.3 MB)

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

[#007] sha256:282e1d3dc8e4de0439cadee8581facb5bb5e1bcd0c680561fc4a52021373637c - 0.0% (1.11 KB)

[#008] sha256:362d109aa43dd11607b38f75925743a3fa7822621b76a872e308a5e2eba20bb0 - 19.04% (155 MB)

[#009] sha256:858d9eec1ed6aaf74780e780a6f1a998c31cb0eb6527d7aeb3508387aa2d151b - 64.96% (528 MB)

[#010] sha256:5040ff74ef59300a536e4f07c72655eb15d8ed288910ac0b25488926c329eeec - 5.56% (45.2 MB)

[#011] sha256:7da9311d00f0d73a967fbfb7bec75473bd7b33e67559b2c03e1d884db25dbbe6 - 0.13% (1.07 MB)

[#012] sha256:f003c76edcc36dc245f658590b3bbe6a9240daeb17c3b9e347d28852ea07acd4 - 2.4% (19.5 MB)

[#013] sha256:cbcae2e407e0026cc4bab9076d8d35d06f2615a9917368e4efec403a213366ff - 0.0% (1.9 KB)


History
2026-01-12 00:00:00 UTC (debuerreotype 0.17)

# debian.sh --arch 'arm64' out/ 'bookworm' '@1768176000'

2026-01-13 03:10:48 UTC (buildkit.dockerfile.v0)

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

2026-01-13 03:10:48 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2026-01-13 03:10:48 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit

2026-01-13 03:10:48 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305

2026-01-13 03:10:48 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.12.12

2026-01-13 03:10:48 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4

2026-01-13 03:22:53 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; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit

2026-01-13 03:22:53 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

2026-01-13 03:22:53 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2026-01-30 08:05:49 UTC (buildkit.dockerfile.v0)

WORKDIR /app/api

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV UV_VERSION=0.8.9

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c pip install --no-cache-dir uv==${UV_VERSION} # buildkit

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV FLASK_APP=app.py

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV EDITION=SELF_HOSTED

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV DEPLOY_ENV=PRODUCTION

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV CONSOLE_API_URL=http://127.0.0.1:5001

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV CONSOLE_WEB_URL=http://127.0.0.1:3000

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV SERVICE_API_URL=http://127.0.0.1:5001

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV APP_WEB_URL=http://127.0.0.1:3000

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

EXPOSE [5001/tcp]

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV TZ=UTC

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV LANG=en_US.UTF-8

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV LC_ALL=en_US.UTF-8

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ENV PYTHONIOENCODING=utf-8

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

WORKDIR /app/api

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ARG dify_uid=1001

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ARG NODE_MAJOR=22

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ARG NODE_PACKAGE_VERSION=22.21.0-1nodesource1

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

ARG NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4

2026-01-30 08:05:52 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c groupadd -r -g ${dify_uid} dify && useradd -r -u ${dify_uid} -g ${dify_uid} -s /bin/bash dify && chown -R dify:dify /app # buildkit

2026-01-30 08:06:25 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates curl gnupg && mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key -o /tmp/nodesource.gpg && gpg --show-keys --with-colons /tmp/nodesource.gpg | awk -F: '/^fpr:/ {print $10}' | grep -Fx "${NODESOURCE_KEY_FPR}" && gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg /tmp/nodesource.gpg && rm -f /tmp/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" > /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install -y --no-install-recommends nodejs=${NODE_PACKAGE_VERSION} libgmp-dev libmpfr-dev libmpc-dev expat libldap-2.5-0=2.5.13+dfsg-5 perl libsqlite3-0=3.40.1-2+deb12u2 zlib1g=1:1.2.13.dfsg-1 fonts-noto-cjk media-types libmagic1 && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* # buildkit

2026-01-30 08:06:25 UTC (buildkit.dockerfile.v0)

ENV VIRTUAL_ENV=/app/api/.venv

2026-01-30 12:51:59 UTC (buildkit.dockerfile.v0)

COPY --chown=dify:dify /app/api/.venv /app/api/.venv # buildkit

2026-01-30 12:51:59 UTC (buildkit.dockerfile.v0)

ENV PATH=/app/api/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-01-30 12:52:01 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c mkdir -p /usr/local/share/nltk_data && NLTK_DATA=/usr/local/share/nltk_data python -c "import nltk; from unstructured.nlp.tokenize import download_nltk_packages; nltk.download('punkt'); nltk.download('averaged_perceptron_tagger'); nltk.download('stopwords'); download_nltk_packages()" && chmod -R 755 /usr/local/share/nltk_data # buildkit

2026-01-30 12:52:01 UTC (buildkit.dockerfile.v0)

ENV TIKTOKEN_CACHE_DIR=/app/api/.tiktoken_cache

2026-01-30 12:52:02 UTC (buildkit.dockerfile.v0)

RUN |4 dify_uid=1001 NODE_MAJOR=22 NODE_PACKAGE_VERSION=22.21.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c python -c "import tiktoken; tiktoken.encoding_for_model('gpt2')" && chown -R dify:dify ${TIKTOKEN_CACHE_DIR} # buildkit

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

COPY --chown=dify:dify . /app/api/ # buildkit

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

COPY --chown=dify:dify --chmod=755 docker/entrypoint.sh /entrypoint.sh # buildkit

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

ARG COMMIT_SHA=c1de8f75ca30ef87084402a41c0a49f15f35e647

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

ENV COMMIT_SHA=c1de8f75ca30ef87084402a41c0a49f15f35e647

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

ENV NLTK_DATA=/usr/local/share/nltk_data

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

USER dify

2026-01-30 12:52:03 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/bin/bash" "/entrypoint.sh"]

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