4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cloud RunでnltkライブラリがインストールされたDockerコンテナをデプロイする方法

Last updated at Posted at 2019-12-24

Cloud RunでnltkライブラリがインストールされたDockerコンテナをデプロイしようとしてハマったのでメモ。

事象

以下のように、Dockerfilenltkライブラリをインストールするよう記述し、Cloud RunでDockerコンテナをデプロイしようとするとエラーが発生します。

Dockerfile
RUN pip install nltk
RUN nltk.download('punkt')
error
2019-12-23 14:02:28.321 PDT Resource [93mpunkt[0m not found.
2019-12-23 14:02:28.321 PDT Please use the NLTK Downloader to obtain the resource:
2019-12-23 14:02:28.321 PDT
2019-12-23 14:02:28.321 PDT [31m>>> import nltk
2019-12-23 14:02:28.321 PDT >>> nltk.download('punkt')
2019-12-23 14:02:28.321 PDT [0m
2019-12-23 14:02:28.321 PDT For more information see: https://www.nltk.org/data.html
2019-12-23 14:02:28.321 PDT
2019-12-23 14:02:28.321 PDT Attempted to load [93mtokenizers/punkt/PY3/english.pickle[0m
2019-12-23 14:02:28.321 PDT
2019-12-23 14:02:28.321 PDT Searched in:
2019-12-23 14:02:28.321 PDT - '/home/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/local/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/local/share/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/local/lib/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/share/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/local/share/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/lib/nltk_data'
2019-12-23 14:02:28.321 PDT - '/usr/local/lib/nltk_data'
2019-12-23 14:02:28.321 PDT - ''

errorメッセージを読むと、「nltkライブラリのダウンロード先を探してみたけど見つからない!」と言っているようです。
Dockerfilenltkライブラリをインストールしているにも関わらず不思議なエラーです。

原因

以下でヒントが述べられています。
https://stackoverflow.com/questions/58654672/after-adding-nltk-downloadwords-google-cloud-run
どうやら、nltkのインストール方法には以下の3つが存在していて、App EngineやCloud Runで動作させるためには、Manual installationが必要とのこと。

  • Interactive installer
  • Command line installation
  • Manual installation

nltk.download()はInteractive installer(GUIを使う)なのでApp EngineやCloud Runで動作しなかったようです。

解決策

Dockerfileに以下を追記することでnltkライブラリを使えるようになりました。

# for install wget
RUN apt-get update && apt-get install -y wget

# for NLTK manual download
WORKDIR /usr/local/nltk_data/tokenizers
RUN wget "https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip" -O punkt.zip
RUN unzip punkt.zip
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?