如何使用Dokku代理其他服务器



我希望我的dokku主机运行我的域的主要nginx(假设cooldok.ku)。

在cooldok.ku上,由于某些原因,我还有其他虚拟机,可提供内容。我想在子域上公开此内容(例如vm.cooldok.ku,在COOLDOK.KU主机上以10.0.0.7的VM运行)。

i认为所涉及的方法称为反向 -

在一个最佳世界中,将有一种仅使用Dokku进行注册和"链接"/代理子域的方法。作为额外的奖励,cooldok.ku主机将对HTTPS本身(如SSLTUNNEL)进行SSL-STUFF,以便我可以利用现有证书和/或使用同一机器上的Awesome Letsencrypt,并在VM中使用的安全应用程序,并不是要在VM中使用。通过https提供。

如何使用Dokku实现此情况?编写插件有多困难?

update

因此,基本上Dokku(0.8)配备了完全需要的一切。问题是,Dokku想要实现的目标(启动那些美味的Docker容器)是多少。要破解我想要的设置,可以完成以下操作:

# create folder where we want it
dokku apps:create vm

现在,必须创建/存在这些文件(vanilla 0.8 dokku安装)

#/home/dokku/vm/DOCKER_OPTIONS_DEPLOY
--restart=on-failure:10
#/home/dokku/vm/IP.web.1 
10.0.0.7
#/home/dokku/vm/PORT.web.1 
80
#/home/dokku/vm/URLS 
# THIS FILE IS GENERATED BY DOKKU - DO NOT EDIT, YOUR CHANGES WILL BE OVERWRITTEN - I did it nonetheless
http://vm.cooldok.ku
#/home/dokku/vm/VHOST 
vm.cookdok.ku
#/home/dokku/vm/nginx.conf
# Just listing changes from another default app
[...]
proxy_pass  http://vm-host;
[...]
upstream vm-host {
  server 10.0.0.7:80;
}

之后,Nginx需要手动重新启动(或... Dokku可以在这里为我们做某事)

我很确定可以遗漏某些(冗余)信息,因为Dokku应该使Nginx.conf本身困惑。我不确定此设置是否可以在重新启动/NGINX重新启动中幸存下来。另外,在测试中,Letsencrypt不会让我安装证书/重建NGINX配置,因为它将应用程序vm视为未部署。

update2

要克服"未部署的应用程序"问题,就足够了touch /home/dokku/vm/CONTAINER,但这会变得更加混乱...

我将帖子更新中的信息捆绑到https://github.com/econya/scripts/blob/master/master/scripts/virt-helpers/firt-helpers/fake--dokku-app.sh。

我猜想具有向上兼容性的最干净的解决方案是创建一个dockerfile,该码头本身会启动反向代理(通过env/config:set:set variables配置) - 但是我很高兴学习一个更聪明,更聪明的解决方案,或者我得到了编写适当插件的报酬;)

第二种方法是将" null" - docker映像与自定义Nginx模板一起使用。

更新2021 根据发行说明,它现在有效(寻找"路由到非Dokku托管应用程序"):

https://dokku.github.io/release/dokku-0.25.0

我仍然使用旧的dokku和上面编写的解决方案。

最新更新