docker - Dockerfile 之间的重复

标签 docker duplicates dockerfile

我现在正在安装 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/

相关文章:

mysql - 如何在 mysql 中从一行中删除 "no duplicate"条记录

python - 将 dockerfile 从目录配置为 'read'?

docker - 官方 Docker 镜像显示 docker 未运行?

mysql - docker "mysqld: can' t 读取 '/etc/mysql/mysql.conf.d' 的目录(os errno 2 - 没有这样的文件或目录)”

docker - 当 docker 处于分离状态或前台时,日志不会发送到 AWS Cloudwatch

string - 我们如何计算 MATLAB 元胞数组中特定字符串的起始和结束索引?

gradle - 设置与Docker Cloud和Spring Boot的持续集成

amazon-web-services - AWS Elastic Beanstalk上的Docker中的Docker

reactjs - Docker (React/Flask/Nginx) - Spotify 授权代码

mysql - 查找MySQL中的重复记录