2017-12-19 2 views
0

CentOS 7 환경에서 Flask 응용 프로그램을 제공하기 위해 uWSGI 또는 Gunicorn과 Nginx를 사용하여 Docker 이미지의 예를 찾기 위해 인터넷을 검색했습니다. 내가 찾은 가장 가까운 것은 this이고 우분투 기반이다.CentOS에서 Flask 응용 프로그램 용 uWSGI/Gunicorn + Nginx가있는 도커 이미지

다음
FROM ubuntu:14.04 
MAINTAINER Phillip Bailey <[email protected]> 

ENV DEBIAN_FRONTEND noninteractive 

RUN apt-get update && apt-get install -y \ 
    python-pip python-dev uwsgi-plugin-python \ 
    nginx supervisor 
COPY nginx/flask.conf /etc/nginx/sites-available/ 
COPY supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf 
COPY app /var/www/app 

RUN mkdir -p /var/log/nginx/app /var/log/uwsgi/app /var/log/supervisor \ 
    && rm /etc/nginx/sites-enabled/default \ 
    && ln -s /etc/nginx/sites-available/flask.conf /etc/nginx/sites-enabled/flask.conf \ 
    && echo "daemon off;" >> /etc/nginx/nginx.conf \ 
    && pip install -r /var/www/app/requirements.txt \ 
    && chown -R www-data:www-data /var/www/app \ 
    && chown -R www-data:www-data /var/log 

CMD ["/usr/bin/supervisord"] 
+0

왜 CentOS가 필요합니까? –

+0

Stack Overflow는 프로그래밍 및 개발 관련 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

답변

1

최신 CentOS는 기지의 nginx와 gunicorn와 변종이다 : 나는 CentOS는 7 대신 우분투 사용하려면이 Dockerfile를 다시 쓸 수있는 방법. 이 구성은 단지 스케치 일뿐입니다. 이 같은 설치에 몇 가지 보안 문제가 있습니다 (예 : 플라스크 응용 프로그램은 루트로 실행됩니다)하지만 우분투를 기반으로하는 설치의 주요 차이점을 간략하게 설명합니다.

Dockerfile :

FROM centos:latest 
MAINTAINER Deine Mudda<[email protected]> 

RUN yum -y update && yum -y install python-setuptools epel-release 
RUN yum -y install nginx && \ 
    easy_install pip supervisor && \ 
    echo_supervisord_conf > /etc/supervisord.conf 
COPY nginx/nginx.conf /etc/nginx/nginx.conf 
COPY nginx/flask.conf /etc/nginx/conf.d/ 
COPY supervisor/supervisord.conf /tmp/supervisord.conf 
RUN cat /tmp/supervisord.conf >> /etc/supervisord.conf && \ 
    rm /tmp/supervisord.conf 
COPY app /app 
RUN pip install -r /app/requirements.txt 

CMD ["/usr/bin/supervisord","-nc","/etc/supervisord.conf"] 

nginx.conf (이 제거 CentOS는 'wackynesses의 일부와 대부분 기본의 repo-버전) :

user nginx; 
worker_processes auto; 
error_log /var/log/nginx/error.log; 
pid /run/nginx.pid; 
daemon off; 


events { 
    worker_connections 1024; 
} 

http { 
    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
        '$status $body_bytes_sent "$http_referer" ' 
        '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile   on; 
    tcp_nopush   on; 
    tcp_nodelay   on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 

    include    /etc/nginx/mime.types; 
    default_type  application/octet-stream; 

    include /etc/nginx/conf.d/*.conf; 


} 

flask.conf :

upstream flask { 
    server 127.0.0.1:8080; 
} 

server { 
    listen   80; 
    location/{ 
      proxy_pass  http://flask; 
    } 

} 

supervisord.conf :

[program:flask] 
directory=/app 
command=gunicorn --bind 0.0.0.0:8080 app:app 
autostart=true 
autorestart=true 

[program:nginx] 
command=/usr/sbin/nginx 
autostart=true 
autorestart=true 
관련 문제