docker run无法找到应用程序

时间:2017-05-10 16:58:53

标签: nginx docker flask uwsgi supervisord

我的项目结构是:

/docker-test
    /app
        /static
            ....
        /templates
            ....
        -__init__.py
        ....
    -nginx.conf
    -supervisord.conf
    -uwsgi.ini
    -Dockerfile
    -app.py
    -requirements.txt

我通常通过进入/ docker-test> python app.py

运行应用程序

Dockerfile:

FROM python:2.7

# Install uWSGI
RUN pip install uwsgi

# Standard set up Nginx
ENV NGINX_VERSION 1.9.11-1~jessie

RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
    && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \
    && apt-get update \
    && apt-get install -y ca-certificates nginx=${NGINX_VERSION} gettext-base \
    && rm -rf /var/lib/apt/lists/*
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80 443
# Finished setting up Nginx

# Make NGINX run on the foreground
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
# Remove default configuration from Nginx
RUN rm /etc/nginx/conf.d/default.conf
# Copy the modified Nginx conf
COPY nginx.conf /etc/nginx/conf.d/
# Copy the base uWSGI ini file to enable default dynamic uwsgi process number
COPY uwsgi.ini /etc/uwsgi/

# Install Supervisord
RUN apt-get update && apt-get install -y supervisor \
&& rm -rf /var/lib/apt/lists/*
# Custom Supervisord config
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

COPY . /deploy
WORKDIR /deploy
RUN pip install -r /deploy/requirements.txt

CMD ["/usr/bin/supervisord"]

app.py:

#!flask/bin/python

from app import app
from flask import url_for

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True, port=80)

app.add_url_rule('/favicon.ico', edirect_to=url_for('static', filename='favicon.ico'))

supervidord.conf:

[supervisord]
nodaemon=true

[program:uwsgi]
command=/usr/local/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini --ini /deploy/uwsgi.ini
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:nginx]
command=/usr/sbin/nginx
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

nginx.conf:

server {
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }
}

uwsgi.ini:

[uwsgi]
wsgi-file=/app.py
socket = /tmp/uwsgi.sock
chown-socket = nginx:nginx
chmod-socket = 664
cheaper = 2
processes = 16

我能够在没有问题的情况下建立并运行。 尝试访问chrome中的应用时出现500错误: 没有找到python应用程序

1 个答案:

答案 0 :(得分:1)

您目前的工作目录是什么?这听起来好像wsgi-file=/app.py应为wsgi-file=./app.py,或者您需要引用正确的绝对位置,例如wsgi-file=/deploy/app/app.py