我希望我的dokku主机为我的域名运行主要的nginx(让我们说cooldok.ku
)。
在cooldok.ku上由于某些原因我有其他虚拟机提供内容。我想在子域上公开这些内容(比如vm.cooldok.ku
,在cooldok.ku主机上的10.0.0.7的VM中运行)。
我认为所涉及的方法称为反向代理。
在一个最佳的世界中,将会有一种仅限dokku的方式来注册和“链接”/代理子域。作为额外的奖励,cooldok.ku
主机将为https本身(如ssltunnel)执行ssl-stuff,以便我可以利用现有证书和/或在同一台计算机上使用awesome letsencrypt并保护VM中的应用程序并不打算通过https提供服务。
如何用dokku实现这个场景?编写插件这样做有多难?
更新
所以,基本上dokku(0.8)配备了它所需要的一切。问题是,dokku想要达到的目标(启动那些美味的码头集装箱)有多少阻碍了。为了破解我想要的设置,可以完成以下操作:
# 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本身。我不确定这个设置是否能够在reboot / nginx重启后继续存在。此外,在测试中,letsencrypt不允许我安装证书/重建nginx配置,因为它看到应用程序vm
未被部署。
UPDATE2
为了克服“app not deployed”问题,touch /home/dokku/vm/CONTAINER
就足够了,但这会变得更加混乱......
答案 0 :(得分:0)
我将帖子更新中的信息捆绑到https://github.com/econya/scripts/blob/master/scripts/virt-helpers/fake-dokku-app.sh的脏脚本中。
我认为最简洁的解决方案是向上兼容性创建一个Dockerfile,它自己启动一个反向代理(通过env / config:set variables配置) - 但我很高兴能够学到一个更智能,更好的解决方案,或者我得到报酬写一个合适的lugin;)
第二种方法是使用“Null”-Docker图像和我猜的自定义nginx模板。