2017-05-10 2 views
0

meine Projektstruktur ist:Docker Lauf kann nicht Anwendung finden

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

ich normalerweise die App laufen, indem Sie in/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 

Ich bin in der Lage zu bauen Andockfenster und ohne Probleme ausgeführt werden. Ich bekomme 500 Fehler beim Zugriff auf die App in Chrom: keine Python-Anwendung gefunden

Antwort

1

Was ist Ihr derzeitiges Arbeitsverzeichnis? Das klingt einfach wie wsgi-file=/app.py sollte wsgi-file=./app.py sein oder Sie müssen den korrekten absoluten Standort wie wsgi-file=/deploy/app/app.py verweisen.