Скачать 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"]