sha256:0284c64cde50a49166ef27974c7374e965199501c1eeb3ee9fc928ccfca8ad8b
2026-10-14 15:27:30 UTC
899 MB
http://127.0.0.1:3000
COMMIT_SHAf2033a4fc995c0604fad4a2a930e133aadb57577
CONSOLE_API_URLhttp://127.0.0.1:5001
CONSOLE_WEB_URLhttp://127.0.0.1:3000
DEPLOY_ENVPRODUCTION
FLASK_APPapp.py
GPG_KEY7169605F62C751356D054A26A821E680E5FA6305
LANGen_US.UTF-8
LC_ALLen_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
PYTHONIOENCODINGutf-8
PYTHON_SHA256f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d
PYTHON_VERSION3.13.16
SERVICE_API_URLhttp://127.0.0.1:5001
TIKTOKEN_CACHE_DIR/app/api/.tiktoken_cache
TZUTC
UV_VERSION0.8.9
VIRTUAL_ENV/app/api/.venv
[#000] sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39 - 3.0% (26.9 MB)
[#001] sha256:29a6e787b2e07b2b8a2c88b600812f9f7588374cf74e6f17d696695c8984d900 - 0.35% (3.19 MB)
[#002] sha256:aded561bdc17f79b65ec824282d38146fac0eb9d8951b9a7a4ca462bbea8c21d - 1.58% (14.2 MB)
[#003] sha256:29d8700fe216d98a8d918ecf891265355e2ca697f9c11e8290d00813caaed60d - 0.0% (250 Bytes)
[#004] sha256:d9afa675810e983cc97012e92bd10ff4079004b67d3a36276c9d032639587c9f - 0.0% (118 Bytes)
[#005] sha256:23c886909db48e84a545502bf58ee6820cf006f39e77d0df521e8a0a8babc2c4 - 2.54% (22.8 MB)
[#006] sha256:bd9ddc54bea929a22b334e73e026d4136e5b73f5cc29942896c72e4ece69b13d - 0.0% (34 Bytes)
[#007] sha256:caa8898fa0231bbb725df8ca56282271c6a0024328a85fbd01d516138226ef9e - 0.0% (1.14 KB)
[#008] sha256:db6e891e419ecf9c07d8e77d8344fb492efddb18673ac2e3bfae04375ba49669 - 18.35% (165 MB)
[#009] sha256:86938a9668b8f3444e0b8a0551e7b8d052d3c9dbc9131f07619de89eacfd7149 - 69.79% (627 MB)
[#010] sha256:9db0a49de7d54f3e9cfaf45f45e6c3dd1e0847cfeb597fcd7561408372d8f279 - 1.57% (14.1 MB)
[#011] sha256:086e6a4b5dad8102218c8d9762b0662cc98735c79fc901b431a92146c46d068b - 0.13% (1.18 MB)
[#012] sha256:4c4179ffc25161807980f3bb1ddd2478daf1fc91c0250564cd67587f01aebf5c - 1.85% (16.6 MB)
[#013] sha256:a33f398c6dea999a32781534e788e6c2b257c3e8d63e6c0585ce7d2f41e24927 - 0.83% (7.5 MB)
[#014] sha256:307b2c036500dee25d50af3195aea549ee31cd8b5445caec428db04609df15d2 - 0.0% (1.99 KB)
# debian.sh --arch 'amd64' out/ 'bookworm' '@1791158400'
2026-10-06 01:55:52 UTC (buildkit.dockerfile.v0)ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2026-10-06 01:55:52 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-10-06 01:55:52 UTC (buildkit.dockerfile.v0)ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
2026-10-06 01:55:52 UTC (buildkit.dockerfile.v0)ENV PYTHON_VERSION=3.13.16
2026-10-06 01:55:52 UTC (buildkit.dockerfile.v0)ENV PYTHON_SHA256=f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d
2026-10-06 02:06:50 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 g++ 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-10-06 02:06:50 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-10-06 02:06:50 UTC (buildkit.dockerfile.v0)CMD ["python3"]
2026-10-09 10:53:14 UTC (buildkit.dockerfile.v0)WORKDIR /app/api
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV UV_VERSION=0.8.9
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c pip install --no-cache-dir uv==${UV_VERSION} # buildkit
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV FLASK_APP=app.py
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV DEPLOY_ENV=PRODUCTION
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV CONSOLE_API_URL=http://127.0.0.1:5001
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV CONSOLE_WEB_URL=http://127.0.0.1:3000
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV SERVICE_API_URL=http://127.0.0.1:5001
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV APP_WEB_URL=http://127.0.0.1:3000
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)EXPOSE map[5001/tcp:{}]
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV TZ=UTC
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV LANG=en_US.UTF-8
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV LC_ALL=en_US.UTF-8
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ENV PYTHONIOENCODING=utf-8
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)WORKDIR /app/api
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ARG dify_uid=1001
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ARG NODE_PACKAGE_VERSION=24.20.0-1nodesource1
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)ARG NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4
2026-10-09 10:53:16 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.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-10-09 10:53:37 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c NODE_MAJOR="${NODE_PACKAGE_VERSION%%.*}" && 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-10-09 10:53:37 UTC (buildkit.dockerfile.v0)ENV VIRTUAL_ENV=/app/api/.venv
2026-10-14 09:35:07 UTC (buildkit.dockerfile.v0)COPY --chown=dify:dify /app/api/.venv /app/api/.venv # buildkit
2026-10-14 09:35:07 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-10-14 09:35:09 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c mkdir -p /usr/local/share/nltk_data && NLTK_DATA=/usr/local/share/nltk_data python -m nltk.downloader punkt_tab averaged_perceptron_tagger_eng stopwords && NLTK_DATA=/usr/local/share/nltk_data python -c "import nltk; nltk.data.find('tokenizers/punkt_tab'); nltk.data.find('taggers/averaged_perceptron_tagger_eng'); nltk.data.find('corpora/stopwords')" && chmod -R 755 /usr/local/share/nltk_data # buildkit
2026-10-14 09:35:09 UTC (buildkit.dockerfile.v0)ENV TIKTOKEN_CACHE_DIR=/app/api/.tiktoken_cache
2026-10-14 09:57:04 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.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-10-14 09:57:09 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c python -c "from unstructured.nlp.tokenize import sent_tokenize; sent_tokenize('Warm up.')" && python -c "import spacy; spacy.load('en_core_web_sm')" # buildkit
2026-10-14 15:27:29 UTC (buildkit.dockerfile.v0)COPY --chown=dify:dify api /app/api/ # buildkit
2026-10-14 15:27:30 UTC (buildkit.dockerfile.v0)COPY --chown=dify:dify --chmod=755 api/docker/entrypoint.sh /entrypoint.sh # buildkit
2026-10-14 15:27:30 UTC (buildkit.dockerfile.v0)ARG COMMIT_SHA
2026-10-14 15:27:30 UTC (buildkit.dockerfile.v0)ENV COMMIT_SHA=f2033a4fc995c0604fad4a2a930e133aadb57577
2026-10-14 15:27:30 UTC (buildkit.dockerfile.v0)ENV NLTK_DATA=/usr/local/share/nltk_data
2026-10-14 15:27:30 UTC (buildkit.dockerfile.v0)USER dify
2026-10-14 15:27:30 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["/bin/bash" "/entrypoint.sh"]
sha256:0e70408aa27f13dd227c70a9e8af34094d3e3993c56a758c2e612647ff3e48be
2026-10-14 15:27:31 UTC
877 MB
http://127.0.0.1:3000
COMMIT_SHAf2033a4fc995c0604fad4a2a930e133aadb57577
CONSOLE_API_URLhttp://127.0.0.1:5001
CONSOLE_WEB_URLhttp://127.0.0.1:3000
DEPLOY_ENVPRODUCTION
FLASK_APPapp.py
GPG_KEY7169605F62C751356D054A26A821E680E5FA6305
LANGen_US.UTF-8
LC_ALLen_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
PYTHONIOENCODINGutf-8
PYTHON_SHA256f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d
PYTHON_VERSION3.13.16
SERVICE_API_URLhttp://127.0.0.1:5001
TIKTOKEN_CACHE_DIR/app/api/.tiktoken_cache
TZUTC
UV_VERSION0.8.9
VIRTUAL_ENV/app/api/.venv
[#000] sha256:c75f989a229d12b2d2613a5997de9ff3546f664c22da9248720033a2410220f6 - 3.06% (26.8 MB)
[#001] sha256:aa08835651e777794bde3e8c99bee012c418f60d0d164df22497fa01dc72aca5 - 0.35% (3.03 MB)
[#002] sha256:7b2df2902dddd1a4510670c4d3a6d61b4458fa3e7c1ae0b262d75bde1349ab14 - 1.6% (14.1 MB)
[#003] sha256:32020fed7f2a057b9cee7fdbfa3ea9fc394149118d7a951c462c7055c3cd3f56 - 0.0% (250 Bytes)
[#004] sha256:d9afa675810e983cc97012e92bd10ff4079004b67d3a36276c9d032639587c9f - 0.0% (118 Bytes)
[#005] sha256:c34943eea8bd247b904dbe31958f1b0d0623eec5de3ff91d328f1c63e6eec683 - 2.47% (21.7 MB)
[#006] sha256:bd9ddc54bea929a22b334e73e026d4136e5b73f5cc29942896c72e4ece69b13d - 0.0% (34 Bytes)
[#007] sha256:bc825dec9de82d4d1a3629f6d2596cd7d3aee3f80d298b7109498ed6a63b844d - 0.0% (1.15 KB)
[#008] sha256:23c18471daf5c393c43e1dcc11d8b882a1fb28c2968f0243ec29f96ddfd54407 - 18.74% (164 MB)
[#009] sha256:982e7d3dc8f7d0e2d6dd4302c6978a54b4e87601ead746976a56e71174db1740 - 69.35% (608 MB)
[#010] sha256:8f44fcd1be0450b00dbeabd5f5ccdf9a2936dc582315e7db22036ac36fefba35 - 1.61% (14.1 MB)
[#011] sha256:1d7ee67763d23384e90cbb57ec56eea514409dbf83a429d58944a68df9181dfe - 0.13% (1.18 MB)
[#012] sha256:99368b6a08bc8d436458cb7058a73202bf0722fe866271ce20464eeba6923793 - 1.83% (16 MB)
[#013] sha256:3910cdb0bd7c0e9c26478d9f6ea4b902f1057e5699736c562f54b9c1de77d728 - 0.85% (7.5 MB)
[#014] sha256:307b2c036500dee25d50af3195aea549ee31cd8b5445caec428db04609df15d2 - 0.0% (1.99 KB)
# debian.sh --arch 'arm64' out/ 'bookworm' '@1791158400'
2026-10-06 01:59:21 UTC (buildkit.dockerfile.v0)ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2026-10-06 01:59:21 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-10-06 01:59:21 UTC (buildkit.dockerfile.v0)ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
2026-10-06 01:59:21 UTC (buildkit.dockerfile.v0)ENV PYTHON_VERSION=3.13.16
2026-10-06 01:59:21 UTC (buildkit.dockerfile.v0)ENV PYTHON_SHA256=f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d
2026-10-06 02:12:48 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 g++ 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-10-06 02:12:49 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-10-06 02:12:49 UTC (buildkit.dockerfile.v0)CMD ["python3"]
2026-10-09 10:53:14 UTC (buildkit.dockerfile.v0)WORKDIR /app/api
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV UV_VERSION=0.8.9
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c pip install --no-cache-dir uv==${UV_VERSION} # buildkit
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV FLASK_APP=app.py
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV DEPLOY_ENV=PRODUCTION
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV CONSOLE_API_URL=http://127.0.0.1:5001
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV CONSOLE_WEB_URL=http://127.0.0.1:3000
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV SERVICE_API_URL=http://127.0.0.1:5001
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV APP_WEB_URL=http://127.0.0.1:3000
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)EXPOSE map[5001/tcp:{}]
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV TZ=UTC
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV LANG=en_US.UTF-8
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV LC_ALL=en_US.UTF-8
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ENV PYTHONIOENCODING=utf-8
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)WORKDIR /app/api
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ARG dify_uid=1001
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ARG NODE_PACKAGE_VERSION=24.20.0-1nodesource1
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)ARG NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4
2026-10-09 10:53:17 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.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-10-09 10:53:42 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c NODE_MAJOR="${NODE_PACKAGE_VERSION%%.*}" && 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-10-09 10:53:42 UTC (buildkit.dockerfile.v0)ENV VIRTUAL_ENV=/app/api/.venv
2026-10-14 09:35:17 UTC (buildkit.dockerfile.v0)COPY --chown=dify:dify /app/api/.venv /app/api/.venv # buildkit
2026-10-14 09:35:17 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-10-14 09:35:19 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c mkdir -p /usr/local/share/nltk_data && NLTK_DATA=/usr/local/share/nltk_data python -m nltk.downloader punkt_tab averaged_perceptron_tagger_eng stopwords && NLTK_DATA=/usr/local/share/nltk_data python -c "import nltk; nltk.data.find('tokenizers/punkt_tab'); nltk.data.find('taggers/averaged_perceptron_tagger_eng'); nltk.data.find('corpora/stopwords')" && chmod -R 755 /usr/local/share/nltk_data # buildkit
2026-10-14 09:35:19 UTC (buildkit.dockerfile.v0)ENV TIKTOKEN_CACHE_DIR=/app/api/.tiktoken_cache
2026-10-14 09:35:21 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.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-10-14 09:57:07 UTC (buildkit.dockerfile.v0)RUN |3 dify_uid=1001 NODE_PACKAGE_VERSION=24.20.0-1nodesource1 NODESOURCE_KEY_FPR=6F71F525282841EEDAF851B42F59B5F99B1BE0B4 /bin/sh -c python -c "from unstructured.nlp.tokenize import sent_tokenize; sent_tokenize('Warm up.')" && python -c "import spacy; spacy.load('en_core_web_sm')" # buildkit
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)COPY --chown=dify:dify api /app/api/ # buildkit
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)COPY --chown=dify:dify --chmod=755 api/docker/entrypoint.sh /entrypoint.sh # buildkit
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)ARG COMMIT_SHA
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)ENV COMMIT_SHA=f2033a4fc995c0604fad4a2a930e133aadb57577
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)ENV NLTK_DATA=/usr/local/share/nltk_data
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)USER dify
2026-10-14 15:27:31 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["/bin/bash" "/entrypoint.sh"]
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.