🗒️如何使用 Docker Compoe 解决开发环境的依赖

type
status
slug
summary
tags
category
icon
password
Date
当在玩一些开源项目时,很多都是用docker compose编排的,熟悉了后能大大减少部署所需的时间。当然,单机部署可以使用 docker-compose,但是 docker-compose 无法做到集群调度,想要把多台服务组成容器集群,还是推荐推荐使用kubernetes
以下内容主要参照拉钩的深入浅出docker文章。
要想使用 Docker Compose,需要先安装(其中在macOS和Windows系统下,Docker Compose 都是随着Docker的安装一起安装好的)一个 Docker Compose。
安装好后,来编写Docker Compose模板文件。

编写 Docker Compose 模板文件

在使用 Docker Compose 启动容器时, Docker Compose 会默认使用 docker-compose.yml 文件
Docker Compose 文件主要分为三部分: services(服务)、networks(网络) 和 volumes(数据卷)。
  • services(服务):服务定义了容器启动的各项配置,就像我们执行docker run命令时传递的容器启动的参数一样,指定了容器应该如何启动,例如容器的启动参数,容器的镜像和环境变量等。
  • networks(网络):网络定义了容器的网络配置,就像我们执行docker network create命令创建网络配置一样。
  • volumes(数据卷):数据卷定义了容器的卷配置,就像我们执行docker volume create命令创建数据卷一样。
一个典型的 Docker Compose 文件结构如下:
下面我们首先来学习一下如何编写 services 部分的配置。

编写 Service 配置

services 下,首先需要定义服务名称,例如你这个服务是 nginx 服务,你可以定义 service 名称为 nginx,格式如下:
服务名称定义完毕后,我们需要在服务名称的下一级定义当前服务的各项配置,使得我们的服务可以按照配置正常启动。常用的 16 种 service 配置如下。如果你比较了解,可以直接跳过看 Volume 配置和后续实操即可。
build: 用于构建 Docker 镜像,类似于docker build命令,build 可以指定 Dockerfile 文件路径,然后根据 Dockerfile 命令来构建文件。使用方法如下:
cap_add、cap_drop: 指定容器可以使用到哪些内核能力(capabilities)。使用格式如下:
command: 用于覆盖容器默认的启动命令,它和 Dockerfile 中的 CMD 用法类似,也有两种使用方式:
container_name: 用于指定容器启动时容器的名称。使用格式如下:
depends_on: 用于指定服务间的依赖关系,这样可以先启动被依赖的服务。例如,我们的服务依赖数据库服务 db,可以指定 depends_on 为 db。使用格式如下:
devices: 挂载主机的设备到容器中。使用格式如下:
dns: 自定义容器中的 dns 配置。
dns_search: 配置 dns 的搜索域。
entrypoint: 覆盖容器的 entrypoint 命令。
env_file: 指定容器的环境变量文件,启动时会把该文件中的环境变量值注入容器中。
env 文件的内容格式如下:
environment: 指定容器启动时的环境变量。
image: 指定容器镜像的地址。
pid: 共享主机的进程命名空间,像在主机上直接启动进程一样,可以看到主机的进程信息。
ports: 暴露端口信息,使用格式为 HOST:CONTAINER,前面填写要映射到主机上的端口,后面填写对应的容器内的端口。
networks: 这是服务要使用的网络名称,对应顶级的 networks 中的配置。
volumes: 不仅可以挂载主机数据卷到容器中,也可以直接挂载主机的目录到容器中,使用方式类似于使用docker run启动容器时添加 -v 参数。
volumes 除了上面介绍的长语法外,还支持短语法的书写方式,例如上面的写法可以精简为:

编写 Volume 配置

如果你想在多个容器间共享数据卷,则需要在外部声明数据卷,然后在容器里声明使用数据卷。例如我想在两个服务间共享日志目录,则使用以下配置:

编写 Network 配置

Docker Compose 文件顶级声明的 networks 允许你创建自定义的网络,类似于docker network create命令。
例如你想声明一个自定义 bridge 网络配置,并且在服务中使用它,使用格式如下:
编写完 Docker Compose 模板文件后,需要使用 docker-compose 命令来运行这些文件。下面我们来学习下 docker-compose 都有哪些操作命令。

Docker Compose 操作命令

我们可以使用docker-compose -h命令来查看 docker-compose 的用法,docker-compose 的基本使用格式如下:
其中 options 是 docker-compose 的参数,支持的参数和功能说明如下:
COMMAND 为 docker-compose 支持的命令。支持的命令如下:
学习完 Docker Compose 模板的编写和 docker-compose 命令的使用方法,下面我们编写一个 Docker Compose 模板文件,实现一键启动 WordPress 服务

使用 Docker Compose 管理 WordPress

启动 WordPress

第一步,创建项目目录。首先我们在 /tmp 目录下创建一个 WordPress 的目录,这个目录将作为我们的工作目录。
第二步,进入工作目录。
第三步,创建 docker-compose.yml 文件。
然后写入以下内容:
第四步,启动 MySQL 数据库和 WordPress 服务。
执行完以上命令后,Docker Compose 首先会为我们启动一个 MySQL 数据库,按照 MySQL 服务中声明的环境变量来设置 MySQL 数据库的用户名和密码。然后等待 MySQL 数据库启动后,再启动 WordPress 服务。WordPress 服务启动后,我们就可以通过 http://localhost:8080 访问它了,访问成功后,我们就可以看到WordPress界面,然后按照提示一步一步设置就可以拥有属于自己的专属博客系统了。

停止 WordPress

如果你不再需要 WordPress 服务了,可以使用docker-compose stop命令来停止已启动的服务。
 
Loading...

© NotionNext 2021-2025