pythonって便利だよね。
Bottleも簡単なAPIを作るときにすっごい楽。
実稼働で使用するにはbottleのサーバーでは貧弱です。
そのためにuWSGIを使用してアプリケーションサーバーを前に置きます。
それはいいんだけど、いろいろな環境で使いたいし
コード化したい。
Docker化したいよね。
Dockerfileにしとけば楽だよね。
ということで、Python3, Bottle, uWSGIのAPI環境のDockerfileを残しておきます。
なんかAPI作るときは基本このimageを利用しているかなぁ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
FROM centos:7 LABEL noffuy <3330072-noffuy@users.noreply.gitlab.com> RUN yum install -y bzip2 bzip2-devel gcc gcc-c++ make openssl-devel readline-devel zlib-devel \ && yum install -y https://repo.ius.io/ius-release-el7.rpm \ && yum install -y python35u python35u-libs python35u-devel python35u-pip \ && pip3.5 install --no-cache-dir -U bottle requests uwsgi jinja2 \ && rm -rf /var/cache/yum/* RUN mkdir -p /opt/log ADD ./src/* /opt/app/ EXPOSE 3035 RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LC_CTYPE "ja_JP.UTF-8" ENV LC_NUMERIC "ja_JP.UTF-8" ENV LC_TIME "ja_JP.UTF-8" ENV LC_COLLATE "ja_JP.UTF-8" ENV LC_MONETARY "ja_JP.UTF-8" ENV LC_MESSAGES "ja_JP.UTF-8" ENV LC_PAPER "ja_JP.UTF-8" ENV LC_NAME "ja_JP.UTF-8" ENV LC_ADDRESS "ja_JP.UTF-8" ENV LC_TELEPHONE "ja_JP.UTF-8" ENV LC_MEASUREMENT "ja_JP.UTF-8" ENV LC_IDENTIFICATION "ja_JP.UTF-8" ENV LC_ALL ja_JP.UTF-8 WORKDIR /opt/app CMD uwsgi --ini >> /opt/log/console.log 2>&1 |
とりあえずこのimageを利用して適宜拡張している感じです。
ファイル構成はこんな感じ
1 2 3 4 5 6 |
$ tree . ├── Dockerfile └── src ├── main.py └── ml-api.ini |
起動するときには、logのマウント、portフォワードしてください。
1 2 3 4 |
# build $ docker build -t pyapi . # run $ docker run -it -v `pwd`/log:/opt/log -p 3035:3035 pyapi |
Aplineでも作っておいたのでまた時間があるときに公開します。
これでラクラクAPI開発生活おくれますね。
またね~〜〜。