Docker 多重继承 entry_point 执行
Docker multiple inheriting entry_point execution
我有以下 Dockerfile
:
FROM gitlab-registry.foo.ru/project/my_project
FROM aerospike/aerospike-server
并且在第一个和第二个上面有一个ENTRYPOINT
。
众所周知,只会执行一个ENTRYPOINT
。它是否存在 运行 所有 parents ENTRYPOINT
的方法?
我可以使用 Docker-Compose
来完成这样的任务,对吗?
简单的答案是否定的
您的 Dockerfile 使用 Docker Multi-Stage builds 用于将依赖项从一个图像传输到另一个图像。最后一个 FROM
语句是生成图像的基础图像。
基础镜像的入口点只会被继承。如果您想要一个与来自最后一个 FROM
指令的基本映像中指定的不同的入口点,则需要明确设置入口点。
从上面的评论来看,对 docker 所做的事情存在根本性的误解。容器是一个孤立的进程。当您启动 docker 容器时,它会为您的应用程序启动一个进程,当该进程退出时,容器也会退出。一个好的最佳实践是每个容器一个应用程序。尽管有启动多个程序的方法,但我不推荐它们,因为它会使健康检查、升级、信号处理、日志记录和故障检测复杂化。
没有将多个图像合并在一起的简洁方法。在您列出的 Dockerfile 中,您定义了一个多阶段构建,可用于将文件从第一阶段复制到最后阶段。生成的图像将是最后一个 FROM
部分,而不是两个图像的合并。多阶段构建的典型用途是替换单独的编译映像或外部构建过程,并使用带有编译映像和 运行time 映像的单个命令在 运行time 内输出应用程序图片。这与您正在寻找的完全不同。
在 docker 中 运行 多个应用程序的首选方法是作为来自不同图像的多个容器,并使用 docker 网络将它们连接在一起。您需要从 docker-compose.yml 开始,它可以被 docker-compose
在独立的 docker 引擎上使用,或者与 docker stack deploy
一起使用以使用 swarm 模式的功能。
我有以下 Dockerfile
:
FROM gitlab-registry.foo.ru/project/my_project
FROM aerospike/aerospike-server
并且在第一个和第二个上面有一个ENTRYPOINT
。
众所周知,只会执行一个ENTRYPOINT
。它是否存在 运行 所有 parents ENTRYPOINT
的方法?
我可以使用 Docker-Compose
来完成这样的任务,对吗?
简单的答案是否定的
您的 Dockerfile 使用 Docker Multi-Stage builds 用于将依赖项从一个图像传输到另一个图像。最后一个 FROM
语句是生成图像的基础图像。
基础镜像的入口点只会被继承。如果您想要一个与来自最后一个 FROM
指令的基本映像中指定的不同的入口点,则需要明确设置入口点。
从上面的评论来看,对 docker 所做的事情存在根本性的误解。容器是一个孤立的进程。当您启动 docker 容器时,它会为您的应用程序启动一个进程,当该进程退出时,容器也会退出。一个好的最佳实践是每个容器一个应用程序。尽管有启动多个程序的方法,但我不推荐它们,因为它会使健康检查、升级、信号处理、日志记录和故障检测复杂化。
没有将多个图像合并在一起的简洁方法。在您列出的 Dockerfile 中,您定义了一个多阶段构建,可用于将文件从第一阶段复制到最后阶段。生成的图像将是最后一个 FROM
部分,而不是两个图像的合并。多阶段构建的典型用途是替换单独的编译映像或外部构建过程,并使用带有编译映像和 运行time 映像的单个命令在 运行time 内输出应用程序图片。这与您正在寻找的完全不同。
在 docker 中 运行 多个应用程序的首选方法是作为来自不同图像的多个容器,并使用 docker 网络将它们连接在一起。您需要从 docker-compose.yml 开始,它可以被 docker-compose
在独立的 docker 引擎上使用,或者与 docker stack deploy
一起使用以使用 swarm 模式的功能。