2016-03-11 24 views
6

Tôi muốn triển khai dự án python của tôi trong docker, tôi đã viết lxml>=3.5.0 trong requirments.txt khi dự án cần lxml. Dưới đây là dockfile tôi:Làm thế nào tôi có thể cài đặt lxml trong docker

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"] 

tôi nhận này khi tôi triển khai nó đến Docker:

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

tôi dù đó là vì 'python-dev' và 'python-lxml', sau đó tôi chỉnh sửa dockfile như thế này:

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

Nó không làm việc, và tôi đã nhận một lỗi:

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

Làm thế nào tôi có thể cài đặt lxml chính xác trong docker? Cảm ơn

+2

Bạn sử dụng alpine, do đó, nó có thể là 'apk add' nhưng không phải' apt-get' – user2915097

+0

@ user2915097 Cảm ơn! Tôi đã thay đổi nó thành 'apk thêm python-dev py-lxml', nó trả về lỗi:' error: command 'gcc' không thành công với trạng thái thoát 1'. Tôi không biết làm thế nào để cài đặt lxml – thiiiiiking

+0

tên gói là chính xác https://pkgs.alpinelinux.org/package/main/x86/py-lxml – user2915097

Trả lời

12

tôi thêm RUN apk add --update --no-cache g++ gcc libxslt-dev==1.1.29-r0 trước RUN pip install -r requirements.txt và nó làm việc.

+2

Chỉ muốn thêm rằng phiên bản phát hành của libxslt-dev là không cần thiết, bạn có thể làm 'libxslt-dev'. – Kazanz

Các vấn đề liên quan