gpt4 book ai didi

docker - Dockerfile 之间的重复

转载 作者:行者123 更新时间:2023-12-02 21:14:28 25 4
gpt4 key购买 nike

我现在正在安装 OpenStack Keystone。
对于独立的 Keystone 需要三个组件:mysql、python 和 apache2。

绝对不能把它们都选到基础上,我把python作为基础镜像,其他的作为安装mysql和apache2的RUN语句插入。

我认为 RUN 语句是重复的,因为这三个组件都存在于 Docker Public Registry 上。

有什么好的解决方案或正确的方法来重用现有的外部 Dockerfile 吗???

最佳答案

这里似乎对 Dockerfile 的作用有些混淆:它定义了一个 Docker 镜像。一般来说,在 Docker 中运行应用程序的推荐方法是为每个服务创建一个容器,并根据需要让它们连接到其他容器中的其他服务(稍后会详细介绍)。

在您的情况下,听起来您的应用程序由 OpenStack Keystone(需要 Python 和 Apache 才能运行)和 MySQL 组成。因此,我将在您的 Dockerfile 中安装 Python 和 Apache,并将 MySQL(可能仅使用公共(public)存储库中的镜像)设置为 OpenStack 容器通过网络连接的单独容器。

如上所述,这种场景是运行 Docker 应用程序的推荐方式——它遵循“每个应用程序只做一件事,但做得很好”的 Unix 范式。每个容器只做一件事,并连接到其他容器中的任何其他服务。但是可以在同一个容器中运行多个服务 - 例如。 Keystone 在同一个容器中的 Apache/python 和 MySQL 上运行。如果这是您的目标,您将编写一个 Dockerfile 来安装所有内容并让所有内容一起运行。这个 Dockerfile 可能非常复杂,需要一个让 MySQL 和 Apache 一起工作的 ENTRYPOINT。您可能最终会重复很多已经进入标准 MySQL 和 Apache 镜像的工作。

关于docker - Dockerfile 之间的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52129573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com