赞
踩
Docker Compose是用于定义和运行多容器Docker应用程序的工具。换句话说,如果你要定义一个需要多个Docker容器才能运行的服务,Docker Compose这个工具可能适合你。
但你如何使用Docker Compose?一旦安装了它和Docker守护程序,如何部署那些容器化应用程序?Docker Compose依赖docker-compose.yml文件(反过来,该文件与Dockerfile一起使用)。
我将尽量简单地为你细述这个问题,以便你了解如何自行构建基本的Docker Compose文件。
你需要什么?
你唯一需要的是:
Docker Compose如何工作?
简而言之:Docker Compose构建一堆应用程序以运行完整的服务。docker-compose.yml文件分几个部分,每个部分代表一个容器,每个容器与其他容器组合以创建服务。比如说,你可能有一个包含这两个部分的docker-compose.yml文件:
每个部分由不同的组件组成。又由于你可能需要很特定的Web部分,可以指示docker-compose将在Dockerfile中定义Web部分。实际上,就docker-compose而言,你可以包含多个Dockerfiles以构建很复杂的堆栈。不过我们将构建一个很简单的堆栈,以便轻松入手。
所以,不妨创建包含web和db两部分的这个docker-compose.yml文件。我们将使用NGINX和MySQL来创建一个轻松用于开发目的的堆栈。
docker-compose.yml文件
我们要做的第一件事是创建一个新文件。我们将在刚创建的目录中创建该文件。执行命令mkdir ~/docker-build。使用命令cd ~/docker-build切换到那个刚创建的目录。一旦进入该目录,使用以下命令创建新的docker-compose.yml文件:
nano docker-compose.yml
请记住,这是一个YAML文件,因此格式必须一致(否则构建将失败)。
先要做的是添加文件标题。在文件顶部,添加以下内容:
version: '3'
这指示Docker Compose我们在使用该工具的版本3。下一行将指示Docker Compose以下内容将是要部署的服务。这由以下来定义:
services:
到目前为止,文件是:
version : '3' services:
我们要定义的第一个部分是堆栈的web部分。我们可以用两行简单的代码完成这一步:
web: image: nginx
上面执行的操作是指示Docker Compose使用官方的Nginx映像来部署一个容器。我们没有为该容器做任何特别的操作。它很基础。
下一个部分是定义数据库。这部分来得复杂一点,因为我们要配置必要的参数,数据库才能正常运行。我们先以此来定义这部分:
db:
下一步,我们以下列内容指示Docker Compose将MySQL映像用于该数据库:
image:mysql
现在我们定义供数据库使用的外部端口和内部端口。为此,我们将使用默认的MySQL端口,并予以定义:
ports: - "3306:3306"
最后我们配置数据库环境。环境是数据库的配置选项(密码、用户和数据库名称)。这部分看起来像这样:
environment: - MYSQL_ROOT_PASSWORD=password1 - MYSQL_USER=user - MYSQL_PASSWORD=password2 - MYSQL_DATABASE=database
其中:
上述每个都将由你来定义。确保使用独特的强密码,以确保你的堆栈安全。
把这个文件组合起来看起来就像这样:
version: '3' services: web: image: nginx db: image: mysql ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_USER=user - MYSQL_PASSWORD=password - MYSQL_DATABASE=demodb
记住,文件结构必须一致,所以要小心缩进。
保存并关闭该文件。
用Docker Compose来构建应用程序
我们已构建好了docker-compose.yml文件,是时候构建应用程序了。由于这是很简单的应用程序,它基本上部署两个容器:Web服务器和数据库。如何使用那两个容器取决于你。当然,你可以开发自己的映像(比如自定义的Nginx和MySQL映像,它们可以无缝协同运行,以创建独特的服务或应用程序)。在本文中,我们就使用默认映像(为了演示)。
现在,想构建堆栈,请回到终端窗口,确保你在构建目录中,然后执行命令:
docker-compose up
上述命令将部署web容器和db容器。如果只运行该命令,容器将以附加模式来部署,那样不会返回bash提示符。如果你想以分离模式来运行,要执行该命令:
docker-compose up -d
运行完毕后,你将看到容器ID列了出来(图A)。
图A:我们的容器在运行
想确保容器在运行,请执行该命令:
docker-compose ps
你会看到容器的名称、命令、状态和端口列了出来(图B)。
图B:docker-compose ps命令的输出结果
恭喜你,你刚使用Docker Compose部署了第一个容器“堆栈”。是的,这个例子非常简单,但它应该让你开始踏上漫长而充实的旅程。下一回,我们将创建一个更复杂的docker-compose.yml文件,它与Dockerfile一起运行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。