我正在使用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; }
}
答案 0 :(得分:2)
您需要使用umask=0
来完成这项工作
WSGIServer(app, bindAddress='./flaskapp-fcgi.sock', umask=0).run()