[Python] Django Advanced Tutorial: Executing a Command in Dockerfile Leads to Error

Discussão em 'Python' iniciado por Stack, Abril 14, 2025.

  1. Stack

    Stack Membro Participativo

    I followed the advanced django tutorial on reusable apps, for which I created a Dockerfile:

    FROM python:3.11.11-alpine3.21

    # Install packages (acc. to instructions
    # https://github.com/gliderlabs/docker-alpine/blob/master/docs/usage.md)
    RUN apk --no-cache add curl ca-certificates sqlite git

    WORKDIR /app

    COPY setup.py .
    COPY pyproject.toml .

    # Install `uv` acc. to the instructions
    # https://docs.astral.sh/uv/guides/integration/docker/#installing-uv
    ADD https://astral.sh/uv/0.5.29/install.sh /uv-installer.sh
    RUN sh /uv-installer.sh && rm /uv-installer.sh
    ENV PATH="/root/.local/bin/:$PATH"

    # Install packages with uv into system python
    RUN uv pip install --system -e .

    # Expose the Django port
    EXPOSE 8000

    RUN git config --global --add safe.directory /app


    Now, I have the following structure:

    django-polls-v2/
    - dist/
    - .gitignore
    - django_polls_v2-0.0.1-py3-none-any.whl
    - django_polls_v2-0.0.1.tar.gz
    - django_polls_v2/
    - migrations/
    - ...
    - static/
    - ...
    - templates/
    - ...
    - __init__.py
    - admin.py
    - ...
    - README.rst
    - pyproject.toml
    - MANIFEST.in
    - LICENSE


    In order to install my own package, cf. here, the documentation states to execute the following (where I adjusted the filenames to reflect my setting):

    python -m pip install --user django-polls-v2/dist/django_polls_v2/0.0.1.tar.gz


    Now, when I execute this command inside a running docker container (where I get into the docker container by running docker run -p 8000:8000 --shm-size 512m --rm -v $(pwd):/app -it django:0.0.1 sh), the package gets installed.

    However, putting the same command into the Dockerfile, I get the error

    1.619 WARNING: Requirement 'django-polls-v2/dist/django_polls_v2-0.0.1.tar.gz' looks like a filename, but the file does not exist
    1.670 Processing ./django-polls-v2/dist/django_polls_v2-0.0.1.tar.gz
    1.671 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/app/django-polls-v2/dist/django_polls_v2-0.0.1.tar.gz'


    However, since the path is correct, I am baffled as to why the error occurs. I already tried to create a non-root user before executing the command, yet to no avail. Any advice?

    Continue reading...

Compartilhe esta Página