Docker,如何通过端口为Django应用程序公开套接字

时间:2015-08-24 10:56:26

标签: python django docker

我目前有supervisor为我的Django应用程序服务,然后在我的Docker文件中expose端口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

在Docker中

# Expose listen ports
EXPOSE 8002

但是,我被告知最好在端口上使用socket但是,我不确定如何" EXPOSE"我的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;???)

如何公开套接字?

1 个答案:

答案 0 :(得分:3)

EXPOSE仅适用于UDP和TCP套接字。

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

docker run -v /srv/webapp:/var/run/webapp ...

然后您的容器中的/var/run/webapp/gunicorn.sock将在您的主机上/srv/webapp/gunicorn.sock

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