Docker コンテナ内で root を使用しないようにしていますが、Gunicorn が起動しません。
FROM python:2.7
RUN apt update && \
apt install -y python-pip gcc python-dev libpq-dev && \
pip install --upgrade pip && \
pip install gunicorn && \
pip install eventlet && \
pip install psycopg2
RUN addgroup [username_group] && \
useradd -rm -d /home/[home] -s /bin/bash -g [username_group] -G sudo -u 1000 [username] # uid taken from host system
# USER [username] # if this line is un-commented it doesn't work.
COPY ./web2py /home/[home]/web2py
WORKDIR /home/[home]/web2py
EXPOSE 80 443
CMD gunicorn -b 0.0.0.0:80 -w 3 wsgihandler
これが出力です
[container] | [2019-01-28 20:21:58 +0000] [6] [INFO] Starting gunicorn 19.9.0
[container] | [2019-01-28 20:21:58 +0000] [6] [ERROR] Retrying in 1 second.
[container] | [2019-01-28 20:21:59 +0000] [6] [ERROR] Retrying in 1 second.
[container] | [2019-01-28 20:22:00 +0000] [6] [ERROR] Retrying in 1 second.
[container] | [2019-01-28 20:22:01 +0000] [6] [ERROR] Retrying in 1 second.
[container] | [2019-01-28 20:22:02 +0000] [6] [ERROR] Retrying in 1 second.
[container] | [2019-01-28 20:22:03 +0000] [6] [ERROR] Can't connect to ('0.0.0.0', 80)
ホストと同じ UID を使用することで、ボリュームで発生していたアクセス許可の問題が解決されました。しかし、Dockerfile で sudo を使用できないため、ルートを使用してコンテナーを離れずにサーバーを実行する方法がわかりません。