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

How to share .sock file between nginx docker and uwsgi docker?

我正在使用 docker-compose,现在有两个 docker 容器 - 一个是 nginx 网络服务器,而另一个是 ubuntu 和 Python uwsgi和烧瓶。

据我所知,连接 nginx 和 uWSGI 的最佳方式是在它们之间共享一个 *.sock 文件并将请求传递到文件中(我在没有使用 dockers).

我想知道如何在 docker 之间共享 sock 文件以实现它们之间的通信?

而且完全......我想知道这两个容器的场景 - 一个用于 nginx,一个用于 Flask 框架和 uWSGI - 是否是最佳实践和正确的做法。

谢谢

您不需要与不同的 docker 容器共享 sock 文件。

简单的解决方案是在 docker 之间共享套接字端口。

在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-撰写文件中:

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 容器一个进程。