我想通过docker-compose构建图像,并设置特定的标签。文档中说:
Compose将构建并标记一个生成的名称,并使用该名称 图像。
但是我找不到一种方法来指定标签,对于构建的图像,我总是看到“最新”标签。
我想通过docker-compose构建图像,并设置特定的标签。文档中说:
Compose将构建并标记一个生成的名称,并使用该名称 图像。
但是我找不到一种方法来指定标签,对于构建的图像,我总是看到“最新”标签。
当前回答
看起来docs/tool已经更新了,你现在可以把image标签添加到你的脚本中了。这对我来说很成功。
例子:
version: '2'
services:
baggins.api.rest:
image: my.image.name:rc2
build:
context: ../..
dockerfile: app/Docker/Dockerfile.release
ports:
...
https://docs.docker.com/compose/compose-file/#build
其他回答
根据官方文件:https://docs.docker.com/compose/environment-variables/set-environment-variables/
您可以从.env文件中设置环境变量
$ cat .env
TAG=v1.5
然后,您可以检索它并将其用作图像的标记。
$ cat docker-compose.yml
services:
web:
image: "webapp:${TAG}"
你可以通过命令docker compose convert来验证
$ docker compose convert
services:
web:
image: 'webapp:v1.5'
我想补充一点,您还可以通过环境变量或.env文件管理标记版本。
https://docs.docker.com/compose/environment-variables/#the-env-file
出口标签= 1.11
例子:
version: '3.3'
services:
baggins.api.rest:
image: my.image.name:${TAG}
build:
context: ../..
dockerfile: app/Docker/Dockerfile.release
ports:
...
Docker-compose配置来验证
在我的ci管道中,我的第一个构建被标记为用于运行测试的丢弃值。然后,我将标记更改为latest并重新构建(几乎是即时的,因为它都是缓存的),然后推到注册表。
你可以试试:
services:
nameis:
container_name: hi_my
build: .
image: hi_my_nameis:v1.0.0
如果你指定了image和build,那么Compose用image中指定的webapp和可选标签来命名构建的图像:
build: ./dir
image: webapp:tag
这将导致一个名为webapp的图像和标记标签,从./dir构建。
https://docs.docker.com/compose/compose-file/#build
看起来docs/tool已经更新了,你现在可以把image标签添加到你的脚本中了。这对我来说很成功。
例子:
version: '2'
services:
baggins.api.rest:
image: my.image.name:rc2
build:
context: ../..
dockerfile: app/Docker/Dockerfile.release
ports:
...
https://docs.docker.com/compose/compose-file/#build