Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用docker compose with Dockerfile构建项目的映像?_Docker_Docker Compose_Gitlab_Dockerfile - Fatal编程技术网

如何使用docker compose with Dockerfile构建项目的映像?

如何使用docker compose with Dockerfile构建项目的映像?,docker,docker-compose,gitlab,dockerfile,Docker,Docker Compose,Gitlab,Dockerfile,我有一个项目正在本地开发中运行,使用 作为gitlab和部署的组织要求的一部分,应用程序需要构建到单个Docker映像中 我知道这可以通过在项目中添加一个 但是,我想知道关于如何通过docker将运行多个服务的项目与应用程序代码库组合成一个带有Dockerfile的单个映像以供部署,是否有任何建议或建议,谢谢 编辑:据我所知,方法是使用Dockerfile从应用程序代码库构建一个新映像,然后将其包含在部署环境的docker compose.yml文件中 编辑2:为混乱道歉。我是Docker的新手

我有一个项目正在本地开发中运行,使用

作为gitlab和部署的组织要求的一部分,应用程序需要构建到单个Docker映像中

我知道这可以通过在项目中添加一个

但是,我想知道关于如何通过
docker将运行多个服务的项目与应用程序代码库组合成一个带有
Dockerfile
的单个映像以供部署,是否有任何建议或建议,谢谢

编辑:据我所知,方法是使用Dockerfile从应用程序代码库构建一个新映像,然后将其包含在部署环境的
docker compose.yml
文件中

编辑2:为混乱道歉。我是Docker的新手,有一点学习曲线!在这种情况下,似乎可以在gitlab注册表中构建应用程序映像,然后将该映像包含在docker compose中以供部署,我们将尝试它;DR

一个docker文件通常不足以取代使用docker compose制作的整个容器编排,因此不一定是一个好的选择

关于将docker compose.yml文件转换为docker文件: 您可以将一些信息从
docker compose.yml
文件传递到
docker compose
(例如要运行的命令),但这并不等同,而且您不能使用所有
docker compose.yml
文件内容来传递这些信息

不过,您可以用命令行替换
docker compose.yml
文件(因为
docker compose
正是要替换它)


但是

请记住,
DockerFile
docker compose

  • Dockerfile
    用于图像构建
    ,用于定义构建图像的步骤

  • docker compose
    是一种启动和编排容器的工具,用于构建应用程序(您可以添加一些信息,如构建上下文路径或所需图像的名称,但不能添加docker文件内容本身)

因此,要求“将
docker-compose.yml文件
转换为
Dockerfile
”实际上并不相关

这更多的是将
docker compose.yml
文件转换为一个(或多个)命令行,以手动启动容器。

docker compose
的目的正是为了摆脱这些命令行,使事情变得更简单(自动化)

单个容器中的多个进程: 从:

有多个流程是可以的,但是要从中获得最大的好处 Docker,避免一个容器负责 您的整个应用程序

因此,如果入口点允许您启动多个流程,或者如果您使用主管,您可以这样做,但这可能不是最好的主意

编辑

因为我也不确定你是否清楚,这里是


在与Docker合作之前,您真的应该检查并尝试了解这一点,因为这是一件非常必要的事情。

如果没有看到您的
Docker compose.yml
文件,回答这个问题将非常困难。有些东西根本无法翻译。从docker compose移动到单个docker文件可能会增加项目的复杂性。@larsks感谢您的回复。我在docker compose.yml文件中添加了更多细节。请检查这是否有助于如何将其转换为项目的Dockerfile感谢您的回复。是的,我知道docker compose和dockerfile有不同的用途。在这种情况下,组织要求将项目扁平化为一个映像,以便gitlab CD部署。因此,要从docker文件构建项目映像,我需要从docker compose文件获取命令,并将其转换为docker文件语法?@DavidThomas否,您没有了解docker文件和docker-compose.yml文件之间的区别。你真的应该查一下。我链接的答案也很好地解释了两者之间的区别。您在
Dockerfile
中提供的步骤用于图像生成过程。您在docker compose.yml文件中提供的信息旨在告诉compose如何启动这些容器。好的,谢谢,是的,我已经阅读了文档,我不确定是否更清楚。也许我可以找到一种方法,只使用
docker compose.yml
文件。我不确定当项目已经使用
docker compose
运行时,为什么需要
Dockerfile
,但是目标是使用
Dockerfile
构建整个项目的映像以供部署如果没有适合您需要的基本映像或用于构建映像的Dockerfile,您如何构建映像那么一个基本映像?好吧,这就是问题所在,我如何从docker compose services+应用程序代码库构建项目映像?试图找出Dockerfile需要什么。