Docker,如何通过Django应用程序的端口公开套接字
我目前有supervisor
服务我的Django应用程序,然后我的Docker文件中的端口8002
expose
。 这一切工作正常…
[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
,但是我不确定如何在我的Docker文件中“EXPOSE”套接字。 这是我有多远:
新的主pipeconfiguration….
backlog = 2048 chdir = "/var/projects/apps" bind = "unix:/var/run/webapp/gunicorn.sock" pidfile = "/var/run/webapp/gunicorn.pid" daemon = False debug = False
docker
# Expose listen ports EXPOSE ???? (may be unix:/var/run/webapp/gunicorn.sock fail_timeout=0;???)
我如何公开套接字?
EXPOSE
只适用于UDP和TCP套接字。
如果你想在你的容器之外创build一个Unix域套接字,你将需要在容器中安装一个主机目录,然后把套接字放在那里。 例如,如果您要:
docker run -v /srv/webapp:/var/run/webapp ...
那么你的容器中的/var/run/webapp/gunicorn.sock
就是你主机上的/srv/webapp/gunicorn.sock
。
当然,这里假设你有一些东西在你的主机上运行,或者在另一个也可以访问/srv/webapp
容器中运行,它能够使用这个套接字并使用它来提供服务。
- Docker + Django,服务器运行但欢迎页面不显示
- 在django开发服务器运行的时候,我怎样才能curl127.0.0.1/8000?
- Django应用程序服务器挂起/不会在Docker Compose中启动
- Docker容器停止响应networking调用
- 当docker运行时,会发生错误。 “ValueError:无法configuration处理程序”守望台“:您必须指定一个区域。”
- 这个页面正在工作 – Docker
- 如何使redis BROKER_URLdynamic部署到AWS实例
- 没有名为rest_framework的模块。 Django + Docker
- 如果我移动Elastic Beanstalk应用程序以使用Docker,是否需要自己的服务器?