Скачать Docker NLTK

Я создаю контейнер докера, используя следующий файл Docker:

FROM ubuntu:14.04

RUN apt-get update

RUN apt-get install -y python python-dev python-pip

ADD . /app

RUN apt-get install -y python-scipy

RUN pip install -r /arrc/requirements.txt

EXPOSE 5000

WORKDIR /app

CMD python app.py

Все идет хорошо, пока я не запустил изображение и не получил следующую ошибку:

**********************************************************************
  Resource u'tokenizers/punkt/english.pickle' not found.  Please
  use the NLTK Downloader to obtain the resource:  >>>
  nltk.download()
  Searched in:
    - '/root/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'
    - '/usr/local/lib/nltk_data'
    - u''
**********************************************************************

У меня была эта проблема раньше, и здесь обсуждается , но я не уверен, как подойти к ней с помощью Docker. Я пробовал:

CMD python
CMD import nltk
CMD nltk.download()

а также:

CMD python -m nltk.downloader -d /usr/share/nltk_data popular

Но я все еще получаю ошибку.

Ответ 1

В вашем файле Docker попробуйте добавить вместо этого:

RUN python -m nltk.downloader punkt

Это запустит команду и установит запрошенные файлы в //nltk_data/

Проблема, скорее всего, связана с использованием CMD и RUN в файле Docker. Документация для CMD:

Основной целью CMD является предоставление значений по умолчанию для исполняемого контейнера.

который используется во время docker run <image>, а не во время сборки. Поэтому другие линии CMD, вероятно, были перезаписаны последней строкой CMD python app.py.

Ответ 2

Я столкнулся с той же проблемой, когда создавал образ докера с образом ubuntu и python3 для приложения django.

Я решил, как показано ниже.

# start from an official image
FROM ubuntu:16.04

RUN apt-get update \
  && apt-get install -y python3-pip python3-dev \
  && apt-get install -y libmysqlclient-dev python3-virtualenv

# arbitrary location choice: you can change the directory
RUN mkdir -p /opt/services/djangoapp/src
WORKDIR /opt/services/djangoapp/src

# copy our project code
COPY . /opt/services/djangoapp/src

# install dependency for running service
RUN pip3 install -r requirements.txt
RUN python3 -m nltk.downloader punkt
RUN python3 -m nltk.downloader wordnet

# Setup supervisord
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

# Start processes
CMD ["/usr/bin/supervisord"]