dani (sha256:598b45223d51900188141c464c9372cc8b7c323756c866e380a9c2f4bc8b459c)
Published 2026-10-16 12:28:50 -03:00 by tarcisio
Installation
docker pull git.trademarketingforce.com/tarcisio/dani@sha256:598b45223d51900188141c464c9372cc8b7c323756c866e380a9c2f4bc8b459csha256:598b45223d51900188141c464c9372cc8b7c323756c866e380a9c2f4bc8b459cAbout this package
Imagem base Python 3.12 THIN (uv embutido, deps resolvidas pelo consumidor via uv.lock) — frota uv+3.12 (INFRA-58022)
Image layers
| # debian.sh --arch 'amd64' out/ 'trixie' '@1791158400' |
| ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| ENV LANG=C.UTF-8 |
| 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 |
| ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305 |
| ENV PYTHON_VERSION=3.12.15 |
| ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a |
| 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; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit |
| 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 |
| CMD ["python3"] |
| ENV LC_ALL=C.UTF-8 LANG=C.UTF-8 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 |
| RUN /bin/sh -c apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends gcc g++ libpq-dev postgresql-client libjpeg-dev zlib1g-dev libpng-dev libfreetype6-dev tesseract-ocr tesseract-ocr-por poppler-utils libxml2-dev libxslt1-dev libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libcairo2 libgdk-pixbuf-2.0-0 libharfbuzz-subset0 libffi-dev shared-mime-info fonts-liberation fonts-dejavu-core curl ca-certificates git && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c printf 'uv==0.11.26 \\\n --hash=sha256:1cd9ba4951681ce17f1703106266fcbe27aaa7d37f07d53cce8b5686d68a8755 \\\n --hash=sha256:4dcf4e0b5b5cbdc242dcb002f1f8d99e7cf8c043609869228a9ce15e095c0b18 \\\n --hash=sha256:866ae8d28f7381c15de0906a284c1e97916424c635bf40f7960b3fc889cd725e \\\n --hash=sha256:c28822517d03aebbe9549aaaecc88ad580e4b2b6a927abffe5774a74d6ba09f6\n' > /tmp/uv-req.txt && pip install --no-cache-dir --require-hashes -r /tmp/uv-req.txt && rm -f /tmp/uv-req.txt # buildkit |
| RUN /bin/sh -c groupadd -g 10001 app && useradd -u 10001 -g app -m -s /usr/sbin/nologin app # buildkit |
| WORKDIR /app |
| HEALTHCHECK {Test:[CMD-SHELL python -c "import sys; sys.exit(0)" || exit 1] Interval:30s Timeout:5s StartPeriod:10s StartInterval:0s Retries:3} |
| LABEL org.opencontainers.image.source=https://git.trademarketingforce.com/TMF/infra org.opencontainers.image.title=tmf-python-base org.opencontainers.image.description=Imagem base Python 3.12 THIN (uv embutido, deps resolvidas pelo consumidor via uv.lock) — frota uv+3.12 (INFRA-58022) org.opencontainers.image.licenses=proprietary org.opencontainers.image.vendor=Trade Marketing Force |
| ARG IMAGE_TAG=v3.15.0 |
| ARG APP_VERSION=3.15.0 |
| ARG BUILD_DATE=2026-10-16T15:26:19Z |
| ARG APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b |
| ARG CHAT_USE_LIB=false |
| ARG PROJECTS_USE_LIB=false |
| ARG EMAIL_USE_LIB=false # [DAIS-60564] |
| LABEL maintainer=TMF <contato@tmf.com> |
| LABEL description=DANI - Digital Allergist and Immunology Intelligence |
| LABEL version=3.15.0 |
| LABEL build_date=2026-10-16T15:26:19Z |
| LABEL git_sha=c091b406f9a983e7c020201f52d0af55e0e7f64b |
| ENV IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b BUILD_DATE=2026-10-16T15:26:19Z CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=/app SERVICE_MODE=all WORKERS=2 PORT=8000 |
| RUN |9 IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 BUILD_DATE=2026-10-16T15:26:19Z APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false #= [DAIS-60564]= /bin/sh -c find /etc/apt -name "*.list" -o -name "*.sources" | xargs -r sed -i 's|http://deb.debian.org|https://deb.debian.org|g' && apt-get update && apt-get install -y --no-install-recommends nginx supervisor libpango-1.0-0 libpangocairo-1.0-0 libcairo2 libgdk-pixbuf-2.0-0 shared-mime-info tesseract-ocr tesseract-ocr-eng tesseract-ocr-osd tesseract-ocr-por poppler-utils && rm -rf /var/lib/apt/lists/* && rm -f /etc/nginx/sites-enabled/default # buildkit |
| COPY /app/.venv /app/.venv # buildkit |
| ENV PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin VIRTUAL_ENV=/app/.venv |
| RUN |9 IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 BUILD_DATE=2026-10-16T15:26:19Z APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false #= [DAIS-60564]= /bin/sh -c python -c "import fastapi; print('fastapi OK')" && python -c "import sqlalchemy; print('sqlalchemy OK')" && python -c "import bcrypt; print(f'bcrypt {bcrypt.__version__} OK')" && python -c "import weasyprint; print('weasyprint OK')" && python -c "import jinja2; print(f'jinja2 {jinja2.__version__} OK')" && python -c "import PIL; print(f'pillow {PIL.__version__} OK')" && tesseract --version | head -1 && pdftoppm -v 2>&1 | head -1 # buildkit |
| WORKDIR /app |
| RUN |9 IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 BUILD_DATE=2026-10-16T15:26:19Z APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false #= [DAIS-60564]= /bin/sh -c test "$(id -u app)" = "10001" && test "$(id -g app)" = "10001" # buildkit |
| RUN |9 IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 BUILD_DATE=2026-10-16T15:26:19Z APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false #= [DAIS-60564]= /bin/sh -c mkdir -p /app/data/cache /app/data/uploads /app/logs /run/app /var/log/supervisor /var/log/nginx /usr/share/nginx/html # buildkit |
| ENV LOG_FILE=/app/logs/dani.log |
| COPY backend/app/ ./app/ # buildkit |
| COPY backend/integrations/ ./integrations/ # buildkit |
| COPY backend/knowledge/ ./knowledge/ # buildkit |
| COPY backend/workers/ ./workers/ # buildkit |
| COPY backend/database/ ./database/ # buildkit |
| COPY backend/config/ ./config/ # buildkit |
| RUN |9 IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 BUILD_DATE=2026-10-16T15:26:19Z APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false #= [DAIS-60564]= /bin/sh -c find /app -type f \( -name '.env' -o -name '.env.*' ! -name '.env.example' \) -delete # buildkit |
| COPY backend/celery_app.py ./ # buildkit |
| COPY backend/comm_celery.py ./ # buildkit |
| COPY backend/scripts/import/ ./scripts/import/ # buildkit |
| COPY backend/scripts/migrations/ ./scripts/migrations/ # buildkit |
| COPY backend/scripts/prod/ ./scripts/prod/ # buildkit |
| COPY backend/scripts/setup/ ./scripts/setup/ # buildkit |
| COPY backend/scripts/sync_releases_from_changelog.py ./scripts/sync_releases_from_changelog.py # buildkit |
| COPY backend/scripts/validate_schema.py ./scripts/validate_schema.py # buildkit |
| COPY CHANGELOG.md /app/CHANGELOG.md # buildkit |
| COPY /frontend/dist-vite /usr/share/nginx/html # buildkit |
| COPY infrastructure/brandbook /usr/share/nginx/brandbook # buildkit |
| COPY infrastructure/docker/nginx-unified.conf /etc/nginx/nginx.conf # buildkit |
| COPY infrastructure/docker/nginx-unified-default.conf /etc/nginx/conf.d/default.conf # buildkit |
| COPY infrastructure/docker/nginx-brandbook.conf /etc/nginx/conf.d/brandbook.conf # buildkit |
| COPY infrastructure/docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # buildkit |
| COPY infrastructure/docker/docker-entrypoint-unified.sh /app/docker-entrypoint.sh # buildkit |
| COPY infrastructure/docker/schema-step.sh /app/schema-step.sh # buildkit |
| COPY infrastructure/docker/celery-status.sh /app/celery-status.sh # buildkit |
| COPY infrastructure/docker/healthcheck.sh /app/healthcheck.sh # buildkit |
| RUN |9 IMAGE_TAG=v3.15.0 APP_VERSION=3.15.0 BUILD_DATE=2026-10-16T15:26:19Z APP_GIT_SHA=c091b406f9a983e7c020201f52d0af55e0e7f64b CHAT_USE_LIB=false PROJECTS_USE_LIB=false EMAIL_USE_LIB=false #= [DAIS-60564]= /bin/sh -c chmod +x /app/docker-entrypoint.sh /app/schema-step.sh /app/celery-status.sh /app/healthcheck.sh && chown -R www-data:www-data /usr/share/nginx/html && chown -R www-data:www-data /usr/share/nginx/brandbook && chown -R www-data:www-data /var/log/nginx && chown -R app:app /app/data /app/logs /run/app && find /app/app/agents/profiles -maxdepth 1 -type f \( -name '*.json' -o -name '.active_profile' \) -exec chown app:app {} + # buildkit |
| EXPOSE [80/tcp 8000/tcp] |
| HEALTHCHECK {Test:[CMD-SHELL curl -f http://localhost/health || curl -f http://localhost:8000/health || exit 1] Interval:30s Timeout:10s StartPeriod:5m0s StartInterval:0s Retries:5} |
| ENTRYPOINT ["/app/docker-entrypoint.sh"] |
| CMD ["supervisord" "-c" "/etc/supervisor/conf.d/supervisord.conf"] |
Labels
| Key | Value |
|---|---|
| build_date | 2026-10-16T15:26:19Z |
| description | DANI - Digital Allergist and Immunology Intelligence |
| git_sha | c091b406f9a983e7c020201f52d0af55e0e7f64b |
| maintainer | TMF <contato@tmf.com> |
| org.opencontainers.image.description | Imagem base Python 3.12 THIN (uv embutido, deps resolvidas pelo consumidor via uv.lock) — frota uv+3.12 (INFRA-58022) |
| org.opencontainers.image.licenses | proprietary |
| org.opencontainers.image.source | https://git.trademarketingforce.com/TMF/infra |
| org.opencontainers.image.title | tmf-python-base |
| org.opencontainers.image.vendor | Trade Marketing Force |
| version | 3.15.0 |
Details
2026-10-16 12:28:50 -03:00
Versions (107)
View all
Container
0
OCI / Docker
linux/amd64
proprietary
439 MiB
sha-463f43e62d80
2026-10-31
qa
2026-10-31
v3.19.1
2026-10-28
sha-74b7e6603964
2026-10-28
sha-a09fbd4ff6d9
2026-10-28