参考サイト
github.com
Dockerfile
FROM python:3.4.2
WORKDIR /var/app
# virtualenvをinstall
RUN pip3 install virtualenv
# virtualenv環境を、/var/app上に作る
RUN virtualenv /var/app
# virtualenv環境に、uwsgiをinstallする。
RUN /var/app/bin/pip install --download-cache /src uwsgi
# /bin/false は、ssh, ftpが禁止のuserとのこと
[http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=%2Fbin%2Ffalse+%A4%C8+%2Fsbin%2Fnologin+%A4%CE%B0%E3%A4%A4:title]
# -s は、shellの略のようで、デフォルトのログインシェルを決める。
[http://linuxjm.osdn.jp/html/shadow/man8/useradd.8.html:title]
RUN useradd uwsgi -s /bin/false
RUN mkdir /var/log/uwsgi
# 所有者を再帰的に修正する。-Rは、ディレクトリとその中身の所有者を再帰的に変更する。
RUN chown -R uwsgi:uwsgi /var/log/uwsgi
ONBUILD ADD . /var/app
ONBUILD RUN if [ -f /var/app/requirements.txt ]; then /var/app/bin/pip install -r /var/app/requirements.txt; fi
# ENVは、環境変数の設定
ENV UWSGI_NUM_PROCESSES 1
ENV UWSGI_NUM_THREADS 15
ENV UWSGI_UID uwsgi
ENV UWSGI_GID uwsgi
ENV UWSGI_LOG_FILE /var/log/uwsgi/uwsgi.log
EXPOSE 8080
ADD uwsgi-start.sh /
CMD []
# docker container 実行時に、uwsgi-start.shを実行する。
ENTRYPOINT ["/uwsgi-start.sh"]
uwsgi-start.shの読解
#!/bin/bash
->これはコマンドファイルの先頭に記載するもの
[https://moneyforward.com/engineers_blog/2015/05/21/bash-script-tips/:title]
cd /var/app
# virtualenvをactivateする。
. bin/activate
# Django support
# grep 文字列を検索する -q 検索結果を表示しない, -i 検索条件に大文字と小文字の区別をなくす
# [ ] かっこ内の任意の文字に一致。ハイフン(-)で範囲指定もできる。
# egrep 高度な検索。ここでは、wsgi.pyの場所を指定している。
if cat requirements.txt | grep -q -i Django && [ -z "$WSGI_PATH" ]; then
WSGI_PATH=`find /var/app | egrep '/var/app/[^/]+/wsgi.py'`
fi
# 8080にhttpでつなぐ。chdir=change dir, それぞれ、WSGIの値をセットして、uwsgiを実行する。
uwsgi --http :8080 --chdir /var/app --wsgi-file $WSGI_PATH $UWSGI_MODULE --master --processes $UWSGI_NUM_PROCESSES --threads $UWSGI_NUM_THREADS --uid $UWSGI_UID --gid $UWSGI_GID --logto2 $UWSGI_LOG_FILE
Linux コマンド 勉強中 - egrep 高度な正規表現検索してマッチした行を出力する