这两种配置文件有什么区别?它们是如何一起使用的?我们在这里解释一下。
所以你需要部署容器。你从哪里开始的?您当然可以从命令行执行此操作,每次都通过一长串命令选项部署每个容器。或者,您可以使用允许您在配置文件中仔细构建部署的工具,然后使用简单命令部署容器。
但是你使用哪个配置文件?您使用哪种部署方法?你可以使用docker-compose或docker。您的选择可能都取决于您计划部署的应用程序/服务的复杂性。这一切都归结为使用Dockerfile或docker-compose.yml。
或两者。
参见: 招聘工具包:数据库管理员 (TechRepublic Premium)
你看?它变得复杂,因为您可以使用docker-compose.yml,它将调用Dockerfile以允许您创建更复杂的容器卷展栏。
让我们看看这两者是如何结合使用的。
在我们开始讨论之前,请务必阅读以下内容:
所以假设我们要创建一个将使用最新NGINX映像的Dockerfile,但安装php和php-fpm。该文件名为Dockerfile,我们将它放在一个名为dockerbuild的新目录中。使用以下命令创建该新目录:
mkdir~ / dockerbuild
在〜/ dockerbuild中,使用以下命令创建Dockerfile:
nano Dockerfile
在该文件中,粘贴以下内容:
来自nginx:最新MAINTAINER NAME EMAIL运行apt-get -y update && apt-get -y upgrade && apt-get install -y php-fpm
其中NAME是用作维护者的名称,EMAIL是维护者的电子邮件地址。
这个Dockerfile将提取最新版本的官方NGINX映像,然后基于它构建一个新映像,并升级平台并安装php-fpm包及其依赖项(包括PHP)。这是一个非常简单的例子,但很容易理解。
然后,您可以使用该Dockerfile运行docker build命令,如下所示:
docker build -t“webdev:Dockerfile”。
但我们希望将该文件集成到docker-compose.yml中。
现在让我们制作一个使用该Dockerfile的docker-compose.yml文件,同时也为堆栈添加一个数据库。这个docker-compose.yml文件可能如下所示:
版本:'3'服务: 网站: 建造:。 端口: - “8080:80” D b: 图片:mysql 端口: - “3306:3306” 环境: - MYSQL_ROOT_PASSWORD =密码 - MYSQL_USER =用户 - MYSQL_PASSWORD =密码 - MYSQL_DATABASE = demodb
这里重要的部分是web:我们在web部分指示docker-compose命令在同一目录中使用Dockerfile(。表示在当前工作目录中运行build命令)。如果我们想将Dockerfile放在一个完全独立的目录中,它将在这里声明。比方说,例如,docker-compose.yml文件位于〜/ dockerbuild中,而Dockercompose文件位于〜/ nginxbuild中,您可以使用以下行声明:
build:〜/ nginxbuild
保存并关闭文件。然后,您可以使用该命令部署新容器(从包含docker-compose.yml文件的目录中运行):
码头工人组成
该命令首先从Dockerfile构建NGINX容器,然后按照db:部分的定义部署db容器。
当然,您也可以在docker-compose.yml文件中定义所有内容,但是使用Dockerfile和docker-compose.yml可以实现更加灵活和高效的系统。为什么?假设您已经为NGINX容器定义了一个非常复杂的Dockerfile,并且您希望在完整堆栈中的容器部署中重用它。当您可以简单地重新调整Dockerfile的用途时,为什么要经历在docker-compose.yml中重新定义NGINX容器的所有麻烦。
使用此系统,您可以编写一次并经常使用。因此,通过docker-compose.yml为堆栈的一部分创建Dockerfile并将其重新用于多个堆栈。请记住,docker-compose.yml文件用于定义和运行多容器Docker应用程序,而Dockerfiles是简单的文本文件,其中包含用于组装将用于部署容器的映像的命令。
所以工作流程看起来像这样:
创建Dockerfiles以构建图像。
根据docker-compose.yml中的Dockerfile映像定义复杂堆栈(包含单个容器)。
使用docker compose命令部署整个堆栈。
这就是Dockerfile和docker-compse.yml文件之间的根本区别。
评论专区