3.8 使用 Docker Compose
Docker Compose是一种旨在帮助定义和共享多容器应用程序的工具。使用 Compose,我们可以创建一个 YAML 文件来定义服务,并使用一个命令,可以启动所有内容或将其全部拆除。
使用 Compose的一大优势是您可以在文件中定义您的应用程序堆栈,将其保存在项目存储库的根目录中(它现在是版本控制的),并且可以轻松地让其他人为您的项目做出贡献。有人只需要克隆您的存储库并启动撰写应用程序。事实上,您现在可能会在 GitHub/GitLab 上看到很多项目都在这样做。
那么,我们如何开始呢?
安装 Docker Compose
如果您为 Windows 或 Mac 安装了 Docker Desktop/Toolbox,那么您已经有了 Docker Compose!Play-with-Docker 实例也已经安装了 Docker Compose。如果您使用的是 Linux 机器,则需要安装 Docker Compose。
安装后,您应该能够运行以下命令并查看版本信息。
$ docker compose version
创建撰写文件
-
在应用程序项目的根目录下,创建一个名为
docker-compose.yml
. -
在撰写文件中,我们将从定义模式版本开始。在大多数情况下,最好使用最新的受支持版本。您可以查看 当前架构版本和兼容性矩阵的Compose 文件参考。
version: "3.7"
-
接下来,我们将定义要作为应用程序的一部分运行的服务(或容器)列表。
version: "3.7" services:
现在,我们将开始一次将一个服务迁移到组合文件中。
定义应用服务
请记住,这是我们用来定义应用程序容器的命令。
$ docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=secret \
-e MYSQL_DB=todos \
node:latest \
sh -c "yarn config set registry https://registry.npm.taobao.org/ && yarn install && yarn run dev"
如果您使用的是 PowerShell,则使用此命令:
PS> docker run -dp 3000:3000 `
-w /app -v "$(pwd):/app" `
--network todo-app `
-e MYSQL_HOST=mysql `
-e MYSQL_USER=root