概述
在Docker中,开发者可以通过将应用程序及其所有依赖项打包到容器中来构建、部署和测试应用程序。Docker Compose是一个管理多个容器(使用服务)的必备工具。
在这篇教程中,我们将了解如何在使用Docker Compose管理的Docker容器中执行多个命令。此外,我们还将探索在Docker容器中执行多个命令的不同方法。
1. 单个命令运行
Docker Compose允许我们在Docker容器内执行命令。在容器启动时,可以通过[command]
指令设置任何命令。
让我们看看一个docker-compose.yml文件,其中在容器内执行了一个简单的命令:
version: "3"
services:
server:
image: alpine
command: sh -c "echo "baeldung""
在上述docker-compose.yml文件中,我们正在使用alpine
Docker镜像在容器内执行一个简单的echo
命令。
2. 多个命令运行
我们可以使用Docker Compose通过docker-compose.yml文件创建服务来管理多个应用程序。具体来说,我们将使用&&
和|
操作符。让我们看看它们是如何工作的。
2.1 使用&&
操作符
首先,我们创建一个简单的docker-compose.yml文件来演示Docker Compose如何运行多个命令:
version: "3"
services:
server:
image: alpine
command: sh -c "echo "baeldung" && echo "docker" "
在这里,我们使用了alpine
作为Docker容器的基础镜像。注意最后一行,我们在那里执行了两个命令:echo baeldung
和echo docker
。它们由&&
操作符分隔。
为了演示结果,让我们使用docker-compose up
命令运行此镜像:
$ docker-compose up
Creating dockercompose_server_1 ... done
Attaching to dockercompose_server_1
server_1 | baeldung
server_1 | docker
dockercompose_server_1 exited with code 0
这里,两个echo
语句的输出被打印到了stdout
。
2.2 使用|
操作符
我们还可以使用|
操作符在Docker Compose中运行多个命令。|
操作符的语法与&&
操作符略有不同。
为了说明|
操作符的工作原理,让我们更新我们的docker-compose.yml:
version: "3"
services:
server:
image: alpine
command:
- /bin/sh
- -c
- |
echo "baeldung"
echo "docker"
在这里,我们分别在不同的行添加了命令。除了command
指令外,一切都是一样的。
这种方法推荐,因为它使我们的YAML文件保持整洁,因为所有的命令都在单独的一行。
让我们再次使用docker-compose up
命令运行Docker容器:
$ docker-compose up
Creating dockercompose_server_1 ... done
Attaching to dockercompose_server_1
server_1 | baeldung
server_1 | docker
dockercompose_server_1 exited with code 0
如上图所示,两个命令按顺序执行。
4. 总结
在这篇文章中,我们展示了如何在Docker Compose中执行多个命令。首先,我们看到如何使用&&
操作符执行多个命令。之后,我们使用|
操作符实现了类似的结果。