フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

alpine / djangoの環境でファイルアップロード(pillow)の環境を作る

はじめに

  • djangoでファイル添付つきのフォームを作成するためにpillowをインストールしようとしたらエラーがでたので、調べてみた。 pillow.readthedocs.io

エラーの内容

  • jpeg関連のライブラリが見つからないとエラーが出ていた。
  The headers or library files could not be found for jpeg,
  a required dependency when compiling Pillow from source.

(参考URL) github.com

alpine ライブラリインストール

  • 下記の公式サイトに必要なライブラリが記載されているが、自分の環境では下記の3つのライブラリだけインストールした。

pillow.readthedocs.io

apk add jpeg-dev zlib-dev openjpeg-dev

pillowをインストール

  • インストールすることができた
pip install pillow

Dockerfile

  • pillow以外のインストールされているが、必要な個所だけ抜粋して利用して下さい。
  • 最新のDjangoおよびPythonの環境が構築できるはずです。GraphQLの環境も作成できる。
FROM alpine:latest

RUN apk update

RUN apk add --no-cache git bash build-base libffi-dev openssl-dev bzip2-dev zlib-dev readline-dev sqlite-dev 

ENV ENV="/root/.ashrc"

RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv

## dockerのコンテナログイン時にpyenvコマンドを実行するためにパスを設定しておく
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.ashrc
RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.ashrc


RUN /root/.pyenv/bin/pyenv install 3.8.4
RUN echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.ashrc

RUN /root/.pyenv/bin/pyenv global 3.8.4

RUN /root/.pyenv/versions/3.8.4/bin/pip install django
RUN /root/.pyenv/versions/3.8.4/bin/pip install djangorestframework
RUN /root/.pyenv/versions/3.8.4/bin/pip install django-filter 

RUN /root/.pyenv/versions/3.8.4/bin/pip install pylint-django
RUN apk add mysql-dev
RUN /root/.pyenv/versions/3.8.4/bin/pip install mysqlclient
RUN /root/.pyenv/versions/3.8.4/bin/pip install graphene-django
RUN /root/.pyenv/versions/3.8.4/bin/pip install graphene
RUN /root/.pyenv/versions/3.8.4/bin/pip install -U pip
RUN apk add jpeg-dev zlib-dev openjpeg-dev
RUN /root/.pyenv/versions/3.8.4/bin/pip install pillow