docker環境にPythonの実行環境を用意する

Macでgensimが読み込めないエラーが発生していた件で、問題の切り分けのためにDockerを使ってPythonの実行環境を作成してそこで色々試してみた話 結局、ライブラリを最新版より1つ古いものを使うようにすれば良いという結果になったけどクリーンな環境をサクッと用意できるのはDockerのメリットだなーと実感した。

参考にした、というよりほぼこちらの内容のまま(ありがとうございます) qiita.com

Dockerfile

FROM python:3
USER root

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

docker-compose.yml

version: '3'
services:
  python3:
    restart: always
    build: .
    container_name: 'python3'
    working_dir: '/root/'
    tty: true
    volumes:
      - ./:/root/

Dockerfileとdocker-compose.ymlがあるディレクトリで以下のコマンドを実行

$ docker-compose up -d --build
$ docker exec -it python3 bash

コンテナの中に入る。 試したかったのはgensimなのでこれだけインストール

$ python -m pip install gensim
# 実際は
$ python -m pip install gensim==3.5.0

Dockerfileに含めておきたいときはこんな感じ

RUN pip install --no-cache-dir gensim==3.5.0

--no-cache-dir オプションがないとValueError: numpy.ufunc has the wrong size, try recompiling. Expected 192, got 216 のエラーが出る