docker运行找不到应用程序

我的项目结构是:

/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 

我能够dockerbuild设和运行没有问题。 尝试访问Chrome中的应用程序时出现500错误:找不到python应用程序

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