我已经考虑将jhispter-console部署到不同的远程docker机器上,并想澄清什么是最好的方法。
免责声明:我对docker,docker-compose和docker-machine的体验非常有限,因此我非常感谢jhispter-console以及您可以为我提供的任何帮助。
这是我到目前为止所知道的。
根本不使用远程泊坞机
如果您将jhispter-console项目克隆到远程docker主机并在每个远程主机上本地执行docker-compose,这可能是一种方法。
在我们的例子中,这是不可能的,因为我们不能/希望从远程主机访问git存储库。
问题1:docker-compose对不同环境的支持非常有限
再次使用卷./log-monitoring/log-config/:/config-dir
的示例。如果./log-monitoring/log-config/
的路径在所有docker机器上不相同,例如./log-monitoring/...
在远程docker机器上使用本地docker机器和/home/dockeruser/...
时,您需要有两个单独的docker-compose.yml
文件。每次执行docker-compose时,都要指定要使用的yml文件。
我真的不喜欢让多个docker-compose.yml
只是为了拥有一些不同的路径。
问题2:docker-compose中的卷正在映射(远程)主机
这里不足为奇,但只是陈述一个事实。例如。如果您为./log-monitoring/log-config/:/config-dir
定义了一个卷,则路由器主机上的路径./log-monitoring/log-config/
必须是可用的,而不是您正在执行docker-compose的计算机。
这意味着,我们必须确保例如必须在远程docker机器上提供logstash.conf
文件。
可能的解决方案
我已着手解决上述问题
docker-compose
执行包装在shell脚本中。 shell脚本的功能是获取模板compose.yml
文件并使用envsubst
替换变量占位符。结果将传递给docker-compose
执行。compose.yml
文件,并为每个环境生成一个文件。docker-compose up -d
命令。在此shell脚本中,您将使用scp
将所需文件复制到远程主机。这样做的最新版本的文件将被复制到远程主机,然后在安装卷时使用。感谢您的反馈/帮助!