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。