背景:我正在使用Docker来构建我的开发环境(web应用程序、nginx、gunicorn、postgress等都需要提及)。我希望我的开发环境与生产环境相匹配。我现在使用debian7作为基础发行版,但这个问题与debian无关。我不想在实际生产中使用docker(安全更新、监控、日志记录等等,但这是不同的问题,为什么不呢),但我想使用"真实的"Debian 7作为生产环境。
问题:有没有办法将构建docker映像的命令作为本地命令运行,例如:docker deploy_to_host <Dockerfile>
,它将作为根命令运行RUN
指令等。这与我打开主机根命令并手动复制粘贴命令的效果类似。
谢谢!
在我看来,你使用了错误的工具集,所以我的答案与Docker无关,这就是为什么:
如果你要在没有Docker的生产环境中部署,并希望有某种自动流程来准备机器和部署应用程序,那么你正在寻找以下工具:
- 厨师
- 木偶
- SaltStack
- Ansible
- 或者只是shell脚本
一旦您决定了如何部署到生产环境中,您就可以查看您的开发环境选项。
由于您没有在生产中使用Docker,因此在开发环境中使用它的兴趣不大。然后,我会考虑使用Vagrant定义一个(或多个)虚拟机,并让Vagrant使用您为生产环境选择的工具准备这些虚拟机。(厨师、木偶、SaltStack、Ansible或shell脚本)。请参阅Vagrant供应。
这将具有测试部署解决方案以及在开发环境中测试应用程序的优势,并建立起在部署到产品时所有这些都将按预期工作的信心。
您可以使用这里介绍的远程docker API请参阅第2.3 Misc
节和命令POST /build
。简而言之,您可以将包含Dockerfile
及其根目录的tar文件发布到docker守护进程,以便在远程机器上构建它。
UPD:答案不是我注意力不集中的实际原因。