我想通过docker-compose构建图像,并设置特定的标签。文档中说:

Compose将构建并标记一个生成的名称,并使用该名称 图像。

但是我找不到一种方法来指定标签,对于构建的图像,我总是看到“最新”标签。


当前回答

如果你已经构建了你的映像,你可以使用docker tag命令重新标记它:

docker tag imagename imagename:v1.0

docker tag imagename:v1.0 imagename:v1.1

如果你有多个标签附加到你的存储库,如果你想删除其中一个,你可以使用docker rmi命令:

$ docker rmi imagename:v1.0
Untagged imagename:v1.0

参考:

https://docs.docker.com/engine/reference/commandline/tag/ https://docs.docker.com/engine/reference/commandline/rmi/

其他回答

如果你已经构建了你的映像,你可以使用docker tag命令重新标记它:

docker tag imagename imagename:v1.0

docker tag imagename:v1.0 imagename:v1.1

如果你有多个标签附加到你的存储库,如果你想删除其中一个,你可以使用docker rmi命令:

$ docker rmi imagename:v1.0
Untagged imagename:v1.0

参考:

https://docs.docker.com/engine/reference/commandline/tag/ https://docs.docker.com/engine/reference/commandline/rmi/

你可以试试:

services:
  nameis:
    container_name: hi_my
    build: .
    image: hi_my_nameis:v1.0.0

我想补充一点,您还可以通过环境变量或.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并重新构建(几乎是即时的,因为它都是缓存的),然后推到注册表。

如果你指定了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