我目前有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;???)
如何公开套接字?
答案 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
的容器中运行,它能够使用该套接字并使用它来提供服务。