Docker 划重点 | docker-compose.yml 详解

阅读时长 7 分钟读完

前言

Docker 是目前比较流行的容器技术之一,可以很方便地构建、部署和运行应用程序,相比于传统的虚拟机技术,Docker 容器更加轻量级,使用 Docker 可以大大提高应用程序的开发和部署效率。本文将介绍 Docker Compose 中的 docker-compose.yml 文件,对其中的各个参数进行详细解释,并给出一些示例代码。希望读者通过本文的学习,能够更加深入地了解 Docker Compose,并在实际工作中灵活运用。

Docker Compose

Docker Compose 是 Docker 的一个子项目,用于定义和运行多个 Docker 容器的应用程序。通过 Docker Compose,可以使用一个 YAML 文件定义多个服务,并且在一条命令下启动、关闭、构建和管理多个容器,避免在多个终端窗口中输入繁琐的命令行参数。

Docker Compose 通过一个 docker-compose.yml 文件来定义应用程序的服务,其中包含多个常用配置参数,下面就对这些参数进行详细的介绍。

docker-compose.yml 文件

Docker Compose 需要一个配置文件 docker-compose.yml 来定义应用程序的服务。下面是一个简单的 docker-compose.yml 文件示例:

上述示例定义了一个名为 web 的服务,构建当前目录所在的镜像,将当前目录挂载到容器内的 /code 目录,同时将容器内的 5000 端口映射到主机的 5000 端口上。

version

version 表示 Docker Compose 的版本号,Docker Compose 遵循可重复性原则,即相同版本号的 Docker Compose 拥有相同的行为和参数,不会因 Docker Compose 的版本号更新而产生不兼容的问题。

services

services 定义服务列表,每个服务可以被构建成一个或多个容器,并且可以在容器之间链接共享数据或执行命令。

-- -------------------- ---- -------
---------
  ---    - ---
    ------ -----  - ----
    ------------  - ----
      -------------------- --------
  ----------
    ------ ---------
    -----------
      - --  - -----
    ------
      - ---------  - ----

build

build 定义如何构建服务容器所需的 Dockerfile。这个参数可以是一个本地路径、一个 Git URL 或者一个远程 Docker Registry 名称,后面跟着可选的构建参数。

其中 build 参数可以为本地路径(.)、Git URL 或远程 Docker Registry 名称(user/repo:tag),可以设置以下可选参数:

  • dockerfile:自定义 Dockerfile,可以选择不同的 Dockerfile 进行构建。
  • context:构建上下文路径,可以指定构建时使用的上下文路径。
  • args:自定义构建参数,可以覆盖 Dockerfile 中的默认构建参数。

image

image 指定需要运行的镜像名称,可以从本地或其他 Docker Registry 中拉取该镜像。

ports

ports 指定容器内部暴露的端口,可以将容器的端口映射到宿主机上的任意端口。

volumes

volumes 指定需要挂载到容器中的数据卷,可以将文件或文件夹挂载到容器,也可以将容器的数据卷挂载至宿主机。

environment

environment 定义容器内部运行时所需的环境变量,容器可以通过 $VARIABLE 的方式访问环境变量。

depends_on

depends_on 定义服务之间的依赖关系,可以通过链接方式实现容器间的访问共享。

restart

restart 定义容器的故障自动重启方式。

常用的 restart 方式有以下几种:

  • no:容器服务不会自动重启,除非手动启动。
  • on-failure:只在容器服务由于故障停止时重启(默认最多重启 10 次)。
  • always:容器服务总是自动重启。

示例代码

下面是一个比较完整的 docker-compose.yml 示例代码,将 MySQL 和 PHP 的 Docker 容器进行了链接,并挂载了一些数据卷,以实现独立运行的 PHP 应用程序。

-- -------------------- ---- -------
-------- -----
---------

  ---
    ------ -----
    -------- -----------------------------------------------------
    -------- ------
    ------------
      -------------------- -----
      --------------- ---------
      ----------- ---------
      --------------- ---------
    --------
      - ----------------------
      - ---------------------------------------
    ------
      - -----------

  ----
    ------ ------------------
    -------- ------
    --------
      - -------------------
      - -----------------------------------------------
    ------
      - -----------
    -----------
      - --

--------
  --------

在上述示例代码中,我们定义了 MySQL 和 PHP 的服务容器,同时分别挂载了一些数据卷,容器互相依赖,并且通过 ports 参数定义了端口映射。在使用时,我们只需要在项目的根目录下输入 docker-compose up -d 命令即可启动服务,而不需要手动通过 Docker 命令来启动和管理容器。

总结

Docker Compose 是一个方便简单的工具,可以帮助我们快速构建、部署和运行多个 Docker 容器。通过定义一个统一的 docker-compose.yml 文件,我们可以轻松地管理多个容器,并且可以自定义容器的各种参数,实现的程度完全可以满足前端开发的需求。最后,希望读者通过本文的学习,掌握 Docker Compose 的主要配置参数,并在实际工作中灵活应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f70986f6b2d6eab3f98dc1

纠错
反馈