gpt4 book ai didi

python - 动态服务 django docker 容器

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:28 25 4
gpt4 key购买 nike

我正在创建一项服务,其中 django容器按需生成,供用户在线测试后端功能。

我想让主域上的用户可以使用生成的实例:

示例:用户生成公开端口 8000 的容器 userapp,它应该可以在我的域上通过 mydomain.net/userapp/ 进行访问

我事先不知道正在运行的实例数量或它们的名称。

found a nginx-proxy这里的容器动态创建 nginx 的配置为子域提供容器服务:

$ docker run -e VIRTUAL_HOST=userapp.mydomain.com ...

我希望可以在路径上访问它。如何使用 nginx 或 django 创建动态代理路径?

最佳答案

我用 django-http-proxy 解决了这个问题.

我可以继承HttpProxy并创建一个DynProxyView:

views.py

from httpproxy.views import HttpProxy

class DynProxyView(HttpProxy):
def get_object(self):
return Fiddle.objects.get(pk=self.kwargs['pk'])
rewrite = True
@property
def base_url(self):
url= self.request.scheme+"://localhost:" + str(self.get_object().port)
print url
return url
def get_full_url(self, url):
result = super(DynProxyView, self).get_full_url(url)
return result[:-1] # To get rid of a pesky redundant slash

urls.py

...
url(r'^(?P<pk>[-\w]+)/result/(?P<url>.*)$', DynProxyView.as_view(),name='result'),
...

models.py

class Fiddle(models.Model):
name = models.CharField(max_length=20, unique=True)
hash = models.CharField(max_length=32, null=True, blank=True)
port = models.IntegerField(null=True, blank=True)

这样我就能得到想要的效果。

关于python - 动态服务 django docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com