2016-03-11 25 views
6

Ich möchte mein Python-Projekt in Docker bereitstellen, schrieb ich lxml>=3.5.0 in der requirments.txt als das Projekt benötigt lxml. Hier ist meine dockfile:Wie kann ich lxml im Docker installieren

FROM gliderlabs/alpine:3.3 
RUN set -x \ 
    && buildDeps='\ 
     python-dev \ 
     py-pip \ 
     build-base \ 
    ' \ 
    && apk --update add python py-lxml $buildDeps \ 
    && rm -rf /var/cache/apk/* \ 
    && mkdir -p /app 
ENV INSTALL_PATH /app 
WORKDIR $INSTALL_PATH 
COPY requirements-docker.txt ./ 
RUN pip install -r requirements.txt 
COPY . . 
RUN apk del --purge $buildDeps 
ENTRYPOINT ["celery", "-A", "tasks", "worker", "-l", "info", "-B"] 

ich diese bekam, wenn ich es einsetzen, um Andockfenster:

********************************************************************************* 
Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? 
********************************************************************************* 
error: command 'gcc' failed with exit status 1 
---------------------------------------- 
Rolling back uninstall of lxml 

Ich dachte, es war, weil 'Python-dev' und 'Python-lxml', dann bearbeitet ich die dockfile wie folgt aus:

WORKDIR $INSTALL_PATH 
COPY requirements-docker.txt ./ 
RUN apt-get build-dev python-lxml 
RUN pip install -r requirements.txt 

Es funktionierte nicht, und ich habe einen anderen Fehler:

---> Running in 73201a0dcd59 
/bin/sh: apt-get: not found 

Wie kann ich lxml korrekt in Docker installieren? Dank

+2

Sie verwenden alpine, so kann es "apk add" aber nicht "apt-get" sein – user2915097

+0

@ user2915097 Vielen Dank! Ich habe es in 'apk add python-dev py-lxml' geändert, es hat den Fehler zurückgegeben:' error: command 'gcc' ist fehlgeschlagen mit dem Exit-Status 1'. Ich weiß nicht, wie man lxml installiert – thiiiiiking

+0

der Paketname ist korrekt https://pkgs.alpinelinux.org/package/main/x86/py-lxml – user2915097

Antwort

12

Ich habe RUN apk add --update --no-cache g++ gcc libxslt-dev==1.1.29-r0 vor RUN pip install -r requirements.txt installieren und es funktionierte.

+2

wollte nur hinzufügen, dass die Release-Version von libxslt-dev nicht notwendig ist, können Sie 'libxslt-dev' tun. – Kazanz

Verwandte Themen