【问题标题】:Should I create multiple Dockerfile's for parts of my webapp?我应该为我的 webapp 的一部分创建多个 Dockerfile 吗?
【发布时间】:2017-09-11 12:00:07
【问题描述】:

我无法理解通过 Dockerfile 连接 web 应用程序的各个部分。

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

我想要一个 Dockerfile 来描述所有这些依赖项,我可以将其部署在某个地方,然后创建一个映像并从中运行一个容器。

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

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

【问题讨论】:

  • docker-compose 是您所寻求的。
  • 这是否意味着我必须将每个依赖项都作为一个单独的 Dockerfile?

标签: docker nginx deployment


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    dockerfile你的 docker 镜像。每个您构建并推送到 docker 寄存器的图像都有一个 dockerfile。管理的图像数量没有规定,但管理图像确实需要付出努力。

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

    转到 docker 映像页面并阅读文档。它经常举例说明它支持哪些挂载、它公开了哪些端口以及运行它需要做什么。

    这里是 nginx:

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

    您使用 docker-compose 将多个 docker 映像连接在一起。它让docker-compose up整个服务器堆栈变得很容易。

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

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

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

    在不知道您要构建的具体细节的情况下,我们无法告诉您是否需要自己的 docker 镜像或数量。

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

    所以这里的关键是你需要学习如何使用docker-compose。只有了解了它不能做的事情,你才会知道还有哪些工作需要你去填补。

    最好回到 stackoverflow 来回答一些具体的问题,比如“如何通过 docker 在命令行上运行 Golang 编译器”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多