我有以下情况。我有一台 CentOS 机器,目前在不同的子目录中提供一些 Flask 应用程序(例如http://地址/app1,http://地址/app2等等)。用户将会想出更多的应用程序,可能使用不同的框架和依赖项。
这种情况并没有按照我想要的方向发展。我希望的是每个应用程序都打包到一个docker容器中,要部署它,用户只需打包镜像并推送即可。
基本上是某种类型的云提供商,但是由内部实施。
我知道这需要一些反向代理方面的工作,并且可以手动完成,但我怀疑已经有一个(轻量级)解决方案。我不是这个主题的专家,因此我需要一些关键字来表示适合我们的 IT 部署在 CentOS 机器上的技术,供我研究。
请注意,我买不起复杂的云服务。我需要一些简单的、针对我的用例并且可以在一个下午内部署的服务。
答案1
你可以从很小的空间开始。你甚至不需要注册表或类似的东西。但说实话,我不知道一个完整的解决方案。我会这样做:
基本上,您需要为每个应用程序创建一个 Dockerfile。这允许您创建容器,每个应用程序一个。我对 flask 一无所知,但这可能会对您有所帮助:Docker化你的Flask应用程序
在上面链接的文章的末尾,还有如何运行它的命令。他们没有解释(但你可能需要知道)的是,这个命令将端口 5000 从你的本地机器转发到你的容器的端口 5000。因此,你必须为每个容器更改端口,因为两个容器不能同时在同一个端口上运行。
如果你的容器之间存在依赖关系,或者需要启动多个容器,你可能需要查看docker-compose。
你可能还需要一个反向代理。如果你正在将所有内容容器化,为什么不将其也容器化呢?你甚至可以将其放入同一个 docker-compose 文件中,这就是你所需要的。看看本教程了解更多信息。
最后,但并非最不重要的一点:要将其作为系统服务,创建 Systemd 服务为了它。
下一步:可能的改进是您自己的注册表和自动构建;-)