Docker部署Wagtail项目时出现Could not build wheels for libsass错误求助
Wagtail项目Docker构建中libsass编译失败问题
项目依赖
Django>=4.2,<5.1 wagtail>=5.2,<5.3 psycopg2-binary==2.9.9 libsass==0.22.0 django-libsass==0.9.0 django-compressor==4.4 wagtail-metadata==5.0.0 wagtail-modeltranslation==0.14 wagtail-orderable==1.2.0
Dockerfile配置
# /app/Dockerfile # Pull the base image FROM python:3.11.4-alpine3.17 AS builder # Set workdirectory WORKDIR /src/ # Enviroment variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # Install server packages RUN apk update \ && apk add --no-cache postgresql-dev gcc python3-dev musl-dev libffi-dev openssl-dev \ && apk add --no-cache jpeg-dev libwebp-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev libxml2-dev libxslt-dev libxml2 \ && rm -rf /var/cache/apk/* /tmp/* # Install python packages COPY requirements.txt . RUN pip install --upgrade pip \ && pip install --upgrade pip setuptools \ && pip install --no-cache-dir -r requirements.txt # Postgres Entrypoint COPY src/entrypoint.sh . ENTRYPOINT ["sh","/src/entrypoint.sh"] # Copy needed files COPY src .
docker-compose.yml配置
version: "3.7" services: web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - ./src/:/src/ ports: - 8000:8000 environment: - DJANGO_SETTINGS_MODULE=app.settings.dev env_file: - infra/dev/env_files/.env.dev depends_on: - db db: image: postgres:12.2-alpine restart: always ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data/ env_file: - infra/dev/env_files/.env.dev.db volumes: postgres_data:
问题
执行docker-compose up -d --build时,持续出现Could not build wheels for libsass错误。已尝试升级pip、更换不同版本的libsass,问题未解决。
解决方法
方法1:补充Alpine下编译libsass的依赖
libsass编译需要make和sassc工具,在Dockerfile的apk安装步骤中添加这两个依赖:
RUN apk update \ && apk add --no-cache postgresql-dev gcc python3-dev musl-dev libffi-dev openssl-dev make sassc \ && apk add --no-cache jpeg-dev libwebp-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev libxml2-dev libxslt-dev libxml2 \ && rm -rf /var/cache/apk/* /tmp/*
方法2:替换为Debian基础镜像
Alpine的musl libc与部分C扩展兼容性较差,改用基于Debian的Python镜像可避免编译问题:
# 替换基础镜像 FROM python:3.11.4-slim-bookworm AS builder # 安装Debian系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ gcc python3-dev libpq-dev \ libjpeg-dev libwebp-dev zlib1g-dev libfreetype6-dev \ liblcms2-dev libopenjp2-7-dev libtiff5-dev tk-dev tcl-dev \ libxml2-dev libxslt1-dev \ && rm -rf /var/lib/apt/lists/*
方法3:使用预编译的libsass包
将requirements.txt中的libsass==0.22.0替换为libsass-static==0.22.0(需确认对应版本存在),该包提供预编译二进制文件,无需在容器内编译。
内容的提问来源于stack exchange,提问作者João Gonçalves
相关产品推荐
相关产品推荐

