web-dev-qa-db-ja.com

dockerにlxmlをインストールする方法

pythonプロジェクトをdockerにデプロイし、lxml>=3.5.0はプロジェクトがlxmlを必要とするため、requirments.txtにあります。ここに私のドックファイルがあります:

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

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

私はそれが「python-dev」と「python-lxml」だからだと思ったのですが、ドックファイルを次のように編集しました:

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

それは機能せず、別のエラーが発生しました:

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

Dockerにlxmlを正しくインストールするにはどうすればよいですか?

23
thiiiiiking

追加した RUN apk add --update --no-cache g++ gcc libxslt-devRUN pip install -r requirements.txtそしてそれは働いた。

49
Cintia Sestelo

受け入れられた答えはきちんとしておらず、冗長パッケージをインストールします。画像サイズを縮小するためのより良いソリューションは次のとおりです。

RUN apk add --no-cache --virtual .build-deps gcc libc-dev libxslt-dev && \
    apk add --no-cache libxslt && \
    pip install --no-cache-dir lxml>=3.5.0 && \
    apk del .build-deps

結果の画像サイズは<163MBになります

0
Bohdan Sukhov