Vev*_*rke 423 docker docker-compose
注意:这个问题是在更新 docker 文档之前创建的(这就是它们更新的原因 - 请参阅此答案)。请不要发布指出差异的文档的答案:-)
我一直在使用docker-compose,但注意到还有一个docker compose(没有破折号)。
我无法通过谷歌搜索快速确定两种形式之间的差异。
任何人?
docker compose的帮助:
docker-compose的帮助:
BMi*_*tch 308
(docker compose带有空格)是一个较新的项目,用于将 compose 与 docker 项目的其余部分一起迁移到 Go。这是docker/composev2存储库的分支。它首先被引入给 Docker Desktop 用户,因此 Linux 上的 docker 用户看不到该命令。除了迁移到Go之外,它还使用了compose-spec,部分重写可能会导致行为差异。
最初的 python 项目(称为docker-composedocker/compose repo 的 v1)现已被弃用,开发已转移到 v2。要在 Linux 上将 v2docker compose作为 CLI 插件安装,支持的发行版现在可以安装该docker-compose-plugin软件包。例如,在 Debian 上,我运行apt-get install docker-compose-plugin.
更新:自从提出这个问题以来,Linux 安装已由 Docker 更新为包含 compose v2,而 docker-compose v1 不太可能收到任何更多更新。
Vev*_*rke 40
来自docker’s Captain Program 的 Brandon Mitchell回复了我就此问题打开的 github 问题,如下:
docker/compose-cli 项目处于中间状态,它在 docker-cli Linux 软件包的上游版本中不可用,但包含在 Docker Desktop 中。文档页面通常遵循 docker/cli 中的内容,因此提前将其发布到桌面会使文档陷入困境。我将向 Docker 团队提出这个问题,看看他们如何处理它。
更新:来自 docker github 问题:
gtardif 评论 2天前
撰写命令参考文档现已上线
引用自https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command
Compose V2 and the new docker compose command
Important
The new Compose V2,
which supports the compose command as part of the Docker CLI, is now available.
Compose V2 integrates compose functions into the Docker platform,
continuing to support most of the previous docker-compose features and flags.
You can run Compose V2 by replacing the hyphen (-) with a space,
using docker compose, instead of docker-compose.
Run Code Online (Sandbox Code Playgroud)
除了这里已经说过的之外,我还注意到两者之间的一个重要区别。
在我们的设置中,该docker-compose.yml文件位于模板文件夹中。这样我们就可以基于同一个模板运行同一个项目的多个实例。本地实例有自己的文件夹和自己的.env文件(还有自己的卷)。
模板文件夹中还有一个模板.env文件:使用脚本复制并改编到实例文件夹。
为了正常工作,docker-compose.yml模板文件夹中的文件如下所示:
version: "3"
services:
wordpress:
image: wordpress
container_name: "${COMPOSE_PROJECT_NAME}_wordpress"
env_file:
- ${PWD}/.env
...
Run Code Online (Sandbox Code Playgroud)
和本地实例.env文件:
# compose file location
COMPOSE_FILE=../templateFolder/docker-compose.yml
# this instance name
COMPOSE_PROJECT_NAME=foo
Run Code Online (Sandbox Code Playgroud)
在这种情况下:
docker-compose,.env在实例位置读取文件,这是预期的docker compose,.env在模板位置读取文件!为了覆盖这个,我们必须将模板.env文件重命名为dotEnv.
这里非常简单地描述了这种行为:https://docs.docker.com/compose/features-uses/#have-multiple-isolated-environments-on-a-single-host。
对于后人来说,光的描述是:
Compose 使用项目名称来相互隔离环境。...
默认项目名称是项目目录的基本名称。...
默认项目目录是 Compose 文件的基目录。可以使用 --project-directory 命令行选项定义它的自定义值。
如果它尚未包含在docker安装中,docker compose可以作为 CLI 插件安装在 Linux 上。
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.tag_name')
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.docker.com/compose/cli-command/#installing-compose-v2
如果您不想进行更改,但想要原始的遗留docker-compose功能(也称为 Compose 独立版与 Compose 插件版),您可以执行以下操作:
# Run as root
VERSION=v2.12.2
curl -SL https://github.com/docker/compose/releases/download/$VERSION/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
# Test it
docker-compose
Run Code Online (Sandbox Code Playgroud)
这允许您继续docker-compose在 shell 脚本中使用。
| 归档时间: |
|
| 查看次数: |
139192 次 |
| 最近记录: |