如何在 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 容器一个进程。
我正在使用 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 容器一个进程。