I'm trying to dockerize my django project. When i run "docker build -t django_project" i get following error:
18.82 Building wheel for twisted-iocpsupport (pyproject.toml): started
19.23 Building wheel for twisted-iocpsupport (pyproject.toml): finished with status 'error'
19.24 error: subprocess-exited-with-error
19.24
19.24 × Building wheel for twisted-iocpsupport (pyproject.toml) did not run successfully.
19.24 │ exit code: 1
19.24 ╰─> [13 lines of output]
19.24 running bdist_wheel
19.24 running build
19.24 running build_ext
19.24 building 'twisted_iocpsupport.iocpsupport' extension
19.24 creating build
19.24 creating build/temp.linux-x86_64-cpython-39
19.24 creating build/temp.linux-x86_64-cpython-39/twisted_iocpsupport
19.24 gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Itwisted_iocpsupport -I/usr/local/include/python3.9 -c twisted_iocpsupport/iocpsupport.c -o build/temp.linux-x86_64-cpython-39/twisted_iocpsupport/iocpsupport.o
19.24 twisted_iocpsupport/iocpsupport.c:1210:10: fatal error: io.h: No such file or directory
19.24 1210 | #include "io.h"
19.24 | ^~~~~~
19.24 compilation terminated.
19.24 error: command '/usr/bin/gcc' failed with exit code 1
19.24 [end of output]
19.24
19.24 note: This error originates from a subprocess, and is likely not a problem with pip.
19.24 ERROR: Failed building wheel for twisted-iocpsupport
19.24 Successfully built autobahn
19.24 Failed to build twisted-iocpsupport
19.24 ERROR: Could not build wheels for twisted-iocpsupport, which is required to install pyproject.toml-based projects
19.70
19.70 [notice] A new release of pip is available: 23.0.1 -> 23.3.1
19.70 [notice] To update, run: pip install --upgrade pip
------
Dockerfile:13
--------------------
11 | # Copy the requirements file into the container and install the Python dependencies
12 | COPY requirements.txt /app/
13 | >>> RUN pip install --no-cache-dir -r requirements.txt --no-dependencies
14 |
15 | # Copy the entire project directory into the container
--------------------
ERROR: failed to solve: process "/bin/sh -c pip install --no-cache-dir -r requirements.txt --no-dependencies" did not complete successfully: exit code: 1
My requirements.txt:
asgiref==3.7.2
attrs==23.1.0
autobahn==23.6.2
Automat==22.10.0
cffi==1.16.0
channels==4.0.0
constantly==23.10.4
cryptography==41.0.5
daphne==4.0.0
Django==4.2.7
hyperlink==21.0.0
idna==3.4
incremental==22.10.0
pyasn1==0.5.0
pyasn1-modules==0.3.0
pycparser==2.21
pyOpenSSL==23.3.0
python-decouple==3.8
service-identity==23.1.0
six==1.16.0
sqlparse==0.4.4
Twisted==23.10.0
twisted-iocpsupport==1.0.4
txaio==23.1.1
typing_extensions==4.8.0
tzdata==2023.3
zope.interface==6.1
Dockerfile:
FROM python:3.9.18
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SETTINGS_MODULE django_project.settings
WORKDIR /app
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /app/
EXPOSE 8000
CMD ["gunicorn", "django_project.wsgi:application", "--bind", "0.0.0.0:8000"]
Python version 3.9.18.
The problem is that daphne is trying to install the twisted-iocpsupport dependency. How to fix it and dockerize django project?
UPD: added Dockerfile
Ehh; I normally just delete that dependency from the requirements.
It's not really nescessary.
I don't know why; probably some missing libraries on linux, but it always fails on Docker. Removing it is quick and dirty, but it works.