# Dockerfile for dirhunt - build from source using Python 3.12 on Debian Bookworm
FROM python:3.12.13-bookworm
# Set working directory
WORKDIR /app
# Install build dependencies (needed for some Python packages)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
libffi-dev \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy requirements first to leverage Docker cache
COPY requirements.txt .
# Install Python dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code
COPY . .
# Build and install the package from source
RUN pip install --no-cache-dir .
# Ensure Python output is not buffered
ENV PYTHONUNBUFFERED=1
# Entrypoint and default command
ENTRYPOINT ["dirhunt"]
CMD ["--help"]
# Ignore environment and VCS and test related files .git __pycache__ *.pyc *.pyo *.egg-info build dist venv .env .env.* *.log *.tox .tox *.pytest_cache .coverage .coverage.* htmlcov .DS_Store
- Build status: build_failed
- Failing step: Step [5/7] RUN pip install --no-cache-dir -r requirements.txt
- Exit code: 1
- Reason: failure while building wheels for greenlet during pip install
Exact error messages (preserved):
- Building wheels for collected packages: greenlet
- /tmp/pip-build-env-nxdgrgt6/overlay/lib/python3.12/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.
- ‘_PyCFrame’ {aka ‘struct _PyCFrame’} has no member named ‘use_tracing’
- ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
- ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
- ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘trash_delete_nesting’
- ‘_PyCFrame’ {aka ‘struct _PyCFrame’} has no member named ‘use_tracing’
- ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
- ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
- ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘trash_delete_nesting’
- PyThreadState has no member named ‘trash_delete_nesting’
- command '/usr/bin/g++' failed with exit code 1
- Note: This error originates from a subprocess, and is likely not a problem with pip.
Missing packages or files mentioned:
- None explicitly missing; failure due to compiling greenlet against Python 3.12 ABI changes.
Version/compatibility information:
- Base image: python:3.12.13-bookworm
- Issue arises from building greenlet wheel against Python 3.12 APIs (PyThreadState, _PyCFrame changes)
- Likely cause: greenlet 2.0.2 not compatible with Python 3.12; needs an updated greenlet or a Python version compatible with the wheel
Actionable note:
- Pin/update greenlet to a Python-3.12-compatible release (or use a Python version with ABI compatibility), or patch the greenlet source.#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile
#
beautifulsoup4==4.12.2
# via
# -r requirements.in
# google
# proxy-db
certifi==2023.7.22
# via requests
charset-normalizer==3.2.0
# via requests
click==7.1.2
# via
# -r requirements.in
# proxy-db
colorama==0.4.6
# via -r requirements.in
google==3.0.0
# via -r requirements.in
greenlet==2.0.3
# via sqlalchemy
humanize==4.7.0
# via -r requirements.in
idna==3.4
# via requests
proxy-db==0.3.1
# via -r requirements.in
requests==2.31.0
# via
# -r requirements.in
# proxy-db
# requests-mock
requests-mock==1.11.0
# via -r requirements.in
six==1.16.0
# via
# proxy-db
soupsieve==2.4.1
# via beautifulsoup4
sqlalchemy==2.0.19
# via proxy-db
typing-extensions==4.7.1
# via sqlalchemy
urllib3==2.0.4
# via requests
Summary of Docker build error - Exact error message and exit code - "ERROR: Could not find a version that satisfies the requirement greenlet==2.0.3 (from versions: 0.1, 0.2, 0.3, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.9, 0.4.10, 0.4.11, 0.4.12, 0.4.13, 0.4.14, 0.4.15, 0.4.16, 0.4.17, 1.0a1, 1.0.0, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.3.post0, 2.0.0a1, 2.0.0a2, 2.0.0rc1, 2.0.0rc2, 2.0.0rc3, 2.0.0rc4, 2.0.0rc5, 2.0.0, 2.0.0.post0, 2.0.1, 2.0.2, 3.0.0a1, 3.0.0rc1, 3.0.0rc2, 3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.3.0, 3.3.1, 3.3.2) " - "ERROR: No matching distribution found for greenlet==2.0.3" - Failing command/step exit: "process '/bin/sh -c pip install --no-cache-dir -r requirements.txt' did not complete successfully: exit code: 1" - Failing command/step - [5/7] RUN pip install --no-cache-dir -r requirements.txt - Missing packages or files mentioned - greenlet==2.0.3 is not available in the PyPI index for this environment (no matching distribution found) - Version mismatch info - Base image: python:3.12.13-bookworm - The requirement greenlet==2.0.3 is not provided for this Python version; available greenlet versions shown do not include 2.0.3, indicating a compatibility/version gap between Python 3.12 and the requested greenlet version.
#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile
#
beautifulsoup4==4.12.2
# via
# -r requirements.in
# google
# proxy-db
certifi==2023.7.22
# via requests
charset-normalizer==3.2.0
# via requests
click==7.1.2
# via
# -r requirements.in
# proxy-db
colorama==0.4.6
# via -r requirements.in
google==3.0.0
# via -r requirements.in
greenlet==2.0.2
# via sqlalchemy
humanize==4.7.0
# via -r requirements.in
idna==3.4
# via requests
proxy-db==0.3.1
# via -r requirements.in
requests==2.31.0
# via
# -r requirements.in
# proxy-db
requests-mock==1.11.0
# via -r requirements.in
six==1.16.0
# via
# proxy-db
soupsieve==2.4.1
# via beautifulsoup4
sqlalchemy==2.0.19
# via proxy-db
typing-extensions==4.7.1
# via sqlalchemy
urllib3==2.0.4
# via requests
# Dockerfile for dirhunt - build from source using Python 3.12 on Debian Bookworm
FROM python:3.12.13-bookworm
# Set working directory
WORKDIR /app
# Install build dependencies (needed for some Python packages)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
libffi-dev \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy requirements first to leverage Docker cache
COPY requirements.txt .
# Install Python dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code
COPY . .
# Build and install the package from source
RUN pip install --no-cache-dir .
# Ensure Python output is not buffered
ENV PYTHONUNBUFFERED=1
# Entrypoint and default command
ENTRYPOINT ["dirhunt"]
CMD ["--help"]
#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile
#
beautifulsoup4==4.12.2
# via
# -r requirements.in
# google
# proxy-db
certifi==2023.7.22
# via requests
charset-normalizer==3.2.0
# via requests
click==7.1.2
# via
# -r requirements.in
# proxy-db
colorama==0.4.6
# via -r requirements.in
google==3.0.0
# via -r requirements.in
greenlet>=3.3.0,<4
# via sqlalchemy
humanize==4.7.0
# via -r requirements.in
idna==3.4
# via requests
proxy-db==0.3.1
# via -r requirements.in
requests==2.31.0
# via
# -r requirements.in
# proxy-db
requests-mock==1.11.0
# via -r requirements.in
six==1.16.0
# via
# proxy-db
soupsieve==2.4.1
# via beautifulsoup4
sqlalchemy==2.0.19
# via proxy-db
typing-extensions==4.7.1
# via sqlalchemy
urllib3==2.0.4
# via requests
Concerns: Build dependencies (build-essential, libffi-dev, libssl-dev) are installed and not removed in the final image; consider multi-stage builds or removing build deps after pip install to reduce image size., No explicit pinning or verification for requirements.txt beyond what’s in the file; ensure requirements.txt is present in build context and versions are appropriately locked. Smoke [PASS]: command -v dirhunt >/dev/null 2>&1 Smoke [PASS]: dirhunt --help | head -n 1