Docker - 使用nginx连接到套接字的权限被拒绝

时间:2017-09-20 15:48:06

标签: docker nginx flask docker-compose fastcgi

我正在使用2个服务运行docker:nginx和一个用于flask-app的fcgi-socket。 当nginx尝试连接到套接字时,它会提供以下内容:

  

[crit] 7#7:* 1 connect()到unix:/usr/src/app/flaskapp-fcgi.sock   失败(13:许可被拒绝)

多克尔-compose.yml:

version: "3"
services:
    app:
        build: app/
        volumes:
            - app-volume:/usr/src/app

    http_proxy:
        build: nginx/
        ports:
            - '80:80'
            - '443:433'
        depends_on:
            - app
        volumes:
            - app-volume:/usr/src/app
        restart: always

volumes:
  app-volume:

Dockerfile nginx:

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

Dockerfile app:

FROM python:3.6.2-onbuild
CMD ["python", "app.fcgi"]

app.fcgi:

#!/usr/bin/env python3

from flup.server.fcgi import WSGIServer
#flask app
from app import app

if __name__ == '__main__':
    WSGIServer(app, bindAddress='./flaskapp-fcgi.sock').run()

nginx.conf:

    ...

    server {
            root /usr/src/app/;

            listen 80 default_server;
            listen [::]:80 default_server;

            location / {
                client_max_body_size 10M;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;

                include fastcgi_params;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                fastcgi_param SCRIPT_NAME "";
                fastcgi_pass unix:/usr/src/app/flaskapp-fcgi.sock;
            }

            location /static { try_files $uri =404; }
            location ~ ^/(static|favicon.ico$|robots.txt$) { try_files $uri =404; }

    }

1 个答案:

答案 0 :(得分:2)

您需要使用umask=0来完成这项工作

WSGIServer(app, bindAddress='./flaskapp-fcgi.sock', umask=0).run()