我应该为我的部分webapp创建多个Dockerfile吗?

时间:2017-09-11 12:00:07

标签: docker nginx deployment

我无法通过Dockerfile来连接部分webapp。

说,我需要Postgres服务器,Golang编译器,nginx实例和其他东西。

我希望有一个描述所有这些依赖项的Dockerfile,我可以在某处部署,然后创建一个映像并从中运行一个容器。

我可以将所有内容放在一个Dockerfile中,还是应该为每个依赖项创建一个单独的Dockerfile,这是正确的吗?

如果我需要为每个依赖项创建一个Dockerfile,那么从它们创建合并图像的正确方法是什么,并使所有部分在一个容器内工作?

2 个答案:

答案 0 :(得分:0)

目前的最佳做法是让一个容器执行一个功能。这意味着您将拥有一个用于ngnix的容器和另一个用于您的应用程序的容器。每个容器都可以由它们自己的dockerfile定义。然后将它们绑在一起,您将使用docker-compose来定义它们之间的依赖关系。

答案 1 :(得分:0)

dockerfile 您的 docker镜像。为您构建的每个映像创建一个 dockerfile 并将其推送到docker寄存器。您管理的图像数量没有规则,但管理图像需要花费精力。

你不需要为Postgres,Nginx,Golang等等构建自己的docker镜像。因为已经发布了许多官方图像。它们是可配置的,易于使用,并且通常可以作为CLI命令运行。

转到泊坞窗图像页面并阅读文档。它经常举例说明它支持的是什么,它暴露了哪些端口以及你需要做些什么来使它运行。

这是nginx:

https://hub.docker.com/_/nginx/

使用 docker-compose 将多个泊坞窗图像连接在一起。它使用一个命令轻松 docker-compose up 整个服务器堆栈。

如何使用 docker-compose 就像尝试解释如何使用 docker 一样。这是一个很大的话题,但我会解决你问题的关键点。

  

说,我需要Postgres服务器,Golang编译器,nginx实例和其他东西。我想要一个描述所有这些依赖项的Dockerfile,我可以在某处部署,然后创建一个映像并从中运行一个容器。

不,您没有使用 dockerfile 描述这些内容。这是试图回答你的问题的问题。 您可能根本不需要dockerfile!

如果您不了解您正在尝试构建的具体细节,我们无法告诉您是否需要自己的泊坞窗图像或多少。

你可以这样;使用来自docker hub的已发布的docker镜像,只部署正在运行的LAMP服务器。您只需使用PHP源代码安装该文件夹即可。

所以关键是你需要学习如何使用 docker-compose 。只有在了解了它无法做到的事情之后,你才会知道还有什么工作要做,以填补空白。

最好回到stackoverflow,回答一下特定的问题,比如“我如何通过docker在命令行上运行Golang编译器”