如何使用 docker-compose 标记 docker 图像

How to tag docker image with docker-compose

我想通过 docker-compose 构建图像并为其设置特定标签。 Documentation 说:

Compose will build and tag it with a generated name, and use that image thereafter.

但我找不到指定标签的方法,对于构建的图像,我总是看到 'latest' 标签。

原始答案 15 年 11 月 20 日

截至今天,没有特定标签的选项。 Docker compose 发挥了它的魔力,并像您所看到的那样分配了一个标签。在调用 docker-compose.

之后,您总是可以调用一些脚本 docker tag <image> <tag>

现在有一个如上所述的选项或here

build: ./dir
image: webapp:tag

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

如果您同时指定图像和构建,Compose 会使用图像中指定的 webapp 和可选标签命名构建的图像:

build: ./dir
image: webapp:tag

这会生成一个名为 webapp 并标记为 tag 的图像,该图像基于 ./dir

https://docs.docker.com/compose/compose-file/#build

你可以试试:

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

如果您已经构建了您的图像,您可以使用 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

参考:

我想补充一点,您还可以通过环境变量或 .env 文件管理标签版本。

https://docs.docker.com/compose/environment-variables/#the-env-file

export TAG=1.11

示例:

version: '3.3'
services:

  baggins.api.rest:
    image: my.image.name:${TAG}
    build:
      context: ../..
      dockerfile: app/Docker/Dockerfile.release
    ports:
      ...

docker-compose config 验证

在我的 ci 管道中,我的第一个构建被标记为用于 运行 测试的一次性值。然后我将标签更改为最新并在推送到注册表之前再次重建(几乎是即时的,因为它都被缓存了)。