如何在nginx docker和uwsgi docker之间共享.sock文件?

我使用docker-compose,现在有两个docker容器 – 一个是nginx web服务器,而另一个是Ubuntu uwsgi和Flask。

据我所知,连接nginx和uWSGI的最好方法是通过在它们之间共享一个*​​ .sock文件来完成的,并将请求传递到文件中(而且,这是我在没有使用docker的旧项目中所做的)。

我想知道如何分享docker之间的袜子文件,以便他们之间的沟通?

而在所有..我想知道是否这两个容器的情况下 – 一个nginx和一个为Flask框架和uWSGI – 是最好的做法和权利。

谢谢

您不需要与不同的docker集装箱共享袜子文件。

简单的解决scheme是在docker之间共享socket端口。

在uwsgi文件中需要添加socket=:3000

 [uwsgi] master=true chdir=. module=flaskapp harakiri=60 callable=app thunder-lock=true socket=:3000 workers=12 threads=4 chmod-socket=666 vacuum=true die-on-term=true pidfile=uwsgi.pid max-requests=5000 post-buffering=65536 post-buffering-bufsize=524288 

定义nginx conf。 uwsgi_pass部分flask:3000意味着(docker服务器名称):(docker揭露端口)。

 server { listen 80; charset utf-8; client_max_body_size 20M; location / { try_files $uri @slack; } location @slack { include uwsgi_params; uwsgi_pass flask:3000; uwsgi_read_timeout 60s; uwsgi_send_timeout 60s; uwsgi_connect_timeout 60s; } } 

在docker-compose文件中:

 nginx: container_name: nginx build: context: . dockerfile: ./Dockerfile-Nginx ports: - "80:80" depends_on: - flask flask: tty: true container_name: flask build: context: . dockerfile: ./Dockerfile expose: - "3000" command: uwsgi --ini ./uwsgi.ini 

所以,让docker为每个docker容器运行一个进程。