Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker,如何在Django应用程序的端口上公开套接字_Python_Django_Docker - Fatal编程技术网

Python Docker,如何在Django应用程序的端口上公开套接字

Python Docker,如何在Django应用程序的端口上公开套接字,python,django,docker,Python,Django,Docker,我目前有supervisor为我的Django应用程序提供服务,然后在Docker文件中的端口8002上公开该应用程序。这一切都很好 [program:app] command=gunicorn app.core.wsgi:application -c /var/projects/app/server/gunicorn.conf user=webapp backlog = 2048 chdir = "/var/projects/apps" bind = "0.

我目前有
supervisor
为我的Django应用程序提供服务,然后在Docker文件中的端口
8002
上公开该应用程序。这一切都很好

[program:app]
command=gunicorn app.core.wsgi:application -c /var/projects/app/server/gunicorn.conf
user=webapp

backlog     = 2048
chdir       = "/var/projects/apps"
bind        = "0.0.0.0:8002"
pidfile     = "/var/run/webapp/gunicorn.pid"
daemon      = False
debug       = False
码头工人

# Expose listen ports
EXPOSE 8002
但是,我被告知最好在端口上使用
套接字
,但我不确定如何在Docker文件中“公开”套接字。这就是我所取得的成绩:

新的主管配置

backlog     = 2048
chdir       = "/var/projects/apps"
bind        = "unix:/var/run/webapp/gunicorn.sock"
pidfile     = "/var/run/webapp/gunicorn.pid"
daemon      = False
debug       = False
码头工人

# Expose listen ports
EXPOSE ???? (may be unix:/var/run/webapp/gunicorn.sock fail_timeout=0;???)

如何公开套接字?

expose
仅适用于UDP和TCP套接字

如果要使Unix域套接字在容器外部可用,则需要在容器内装入主机目录,然后将套接字放在那里。例如,如果您要:

docker run -v /srv/webapp:/var/run/webapp ...
然后容器中的
/var/run/webapp/gunicorn.sock
将位于主机上的
/srv/webapp/gunicorn.sock


当然,这假设您的主机上或另一个容器中运行着某些东西,该容器也可以访问
/srv/webapp
,能够使用该套接字并使用它提供服务。

可能重复使用RUN命令的@satoru。