# A lightweight, source-based build container for Dangerzone
# Builds Dangerzone from source using Poetry and runs the CLI by default.
FROM python:3.11-slim
# Basic environment configuration
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
POETRY_VIRTUALENVS_CREATE=false \
POETRY_NO_INTERACTION=1
# System dependencies required for building and running the app
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
curl \
ca-certificates \
git \
pkg-config \
libffi-dev \
libjpeg-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# Install Poetry for dependency management
RUN python -m pip install --no-cache-dir "poetry>=1.5.0"
WORKDIR /app
# Copy only dependency management files first to leverage Docker cache
COPY pyproject.toml poetry.lock* /app/
# Install project dependencies (and the project itself) using Poetry
RUN poetry config virtualenvs.create false \
&& poetry install --no-interaction --no-ansi
# Copy the rest of the source code
COPY . /app
# Default command: show help for the CLI to verify the image works without a display
CMD ["dangerzone-cli", "--help"]
# Ignore VCS and development files .git .revive **/__pycache__/** **/*.pyc **/*.pyo **/*.out build/ dist/ eggs/ *.egg-info/ *.log *.tox/ .tox/ .coverage *.coverage **/.pytest_cache/** **/tests/** **/docs/** .devcontainer/ dev_scripts/ dangerzone/gui/** **/venv/** venv/ ENV/ .env *.tmp *.temp
- Exact error message and exit code
- Error: The current project could not be installed: No file/folder found for package dangerzone
- Exit code: 1
- Failing command/step
- [6/7] RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi
- Missing packages or files mentioned
- Installing the current project: dangerzone (0.10.0)
- No file/folder found for package dangerzone
- Implication: packaging config is not pointing to a valid package directory in the project (pyproject.toml may need [tool.poetry.packages] or correct package path)
- Version mismatch / dependency info
- The install step downgrades several dependencies to satisfy the lockfile (examples):
- anyio: 4.12.1 -> 4.11.0
- certifi: 2026.2.25 -> 2025.11.12
- charset-normalizer: 3.4.6 -> 3.4.4
- httpx: 0.28.1 -> 0.27.2
- importlib-metadata: 9.0.0 -> 8.7.0
- urllib3: 2.6.3 -> 2.5.0
- packaging: 26.0 -> 25.0
- platformdirs: 4.9.4 -> 4.5.0
- Base image: python:3.11-slim (Debian trixie) and extensive system package install preceding Poetry
- Project version shown: dangerzone (0.10.0)# A lightweight, source-based build container for Dangerzone
# Builds Dangerzone from source using a minimal Python-based installation
# and runs the CLI by default.
FROM python:3.11-slim
ENV DEBIAN_FRONTEND=noninteractive
# System dependencies (mostly for building and ensuring wheels can be installed)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy dependency management files first to leverage Docker cache
COPY pyproject.toml poetry.lock /app/
# Install project dependencies without using Poetry
RUN python -m pip install --no-cache-dir \
"click" \
"platformdirs" \
"PySide6" \
"PyMuPDF" \
"colorama" \
"pyxdg" \
"requests" \
"markdown" \
"packaging" \
"shiboken6"
# Copy the rest of the source code
COPY . /app
# Install the project itself using setuptools (setup.py)
RUN python -m pip install --no-cache-dir -e .
# Default command: run the CLI help to verify the image
CMD ["dangerzone-cli", "--help"]
Concerns: PySide6 may require additional system libraries (e.g., Qt/GUI dependencies) not installed in the slim base image, which could affect runtime., pyproject.toml and poetry.lock are copied but Poetry is not used; this is a minor redundancy but not harmful. Smoke [PASS]: command -v dangerzone-cli Smoke [PASS]: dangerzone-cli --help