我有一个使用docker-compose
作为gitlab和部署的组织要求的一部分,应用程序需要构建到单个Docker镜像中。
我理解这可以通过向项目添加Dockerfile
来完成。
但是,我想知道是否有关于如何通过docker-compose
将应用程序代码库运行多项服务的项目包含到Dockerfile
部署的单个映像中的任何建议或建议,谢谢。
编辑:从我可以收集到的,方法是使用Dockerfile从应用程序代码库构建一个新映像,然后将其包含在部署环境的docker-compose.yml
文件中?
编辑2:为混乱道歉。我是Docker的新手,有一点学习曲线!在这种情况下,似乎可以在gitlab注册表中构建应用程序映像,然后将该映像包含在docker-compose中进行部署,将尝试使用它。
答案 0 :(得分:3)
<强> TL; DR 强>
单个Dockerfile通常不足以替换用docker-compose制作的整个容器编排,并且不一定是一个不错的选择。
docker-compose.yml
文件转换为Dockerfile:您可以将docker-compose.yml
文件中的一些信息传递给您的Dockefile
(例如运行的命令),但这不会是等效的,您不能对所有docker-compose.yml
文件传递信息。 1}}文件内容。
您可以使用命令行替换docker-compose.yml
文件(因为docker-compose
正好替换它)。
<强> BUT 强>
请注意 Dockerfiles
和docker-compose
serve two whole different purposes.
Dockerfile
适用于图像构建,用于定义构建图像的步骤。
docker-compose
是一个启动和编排容器 来构建应用程序的工具(您可以添加一些信息,如构建上下文路径或您需要的图像的名称,但不是Dockerfile内容本身的名称。
所以要求“将docker-compose.yml file
转换为Dockerfile
”并不是真正相关。
这更多的是将docker-compose.yml
文件转换为一个(或几个)命令行以手动启动容器。
docker-compose
的目的正是为了摆脱这些命令行以使事情更简单(它使其自动化)。
拥有多个流程是可以的,但要从中获得最大的收益 Docker,避免一个容器负责多个方面 你的整体申请
因此,如果您的入口点允许您启动多个流程,或者您使用主管,那么您可以这样做,但也许这不是最好的主意。
修改强>
由于我不确定你是否也清楚,这里是the difference between a container and an image。
你真的应该检查一下,并在使用Docker之前尝试理解这一点,因为这是非常必要的事情。