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

4yb*_*aka 89 docker docker-compose

我想通过docker-compose构建图像并为其设置特定标记.文件说:

Compose将使用生成的名称构建并标记它,然后使用该图像.

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

小智 149

似乎文档/工具已更新,您现在可以将image标记添加到脚本中.这对我来说很成功.

例:

version: '2'
services:

  baggins.api.rest:
    image: my.image.name:rc2
    build:
      context: ../..
      dockerfile: app/Docker/Dockerfile.release
    ports:
      ...
Run Code Online (Sandbox Code Playgroud)

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

  • 实际上,它说"如果您指定图像以及构建,那么Compose将构建的图像命名为webapp和图像中指定的可选标记" (6认同)
  • 是的,我发现这个概念很奇怪。我期待一个 `tag` 选项。我正在浏览文档寻找标签无济于事 (5认同)
  • 多么奇怪的界面!一个字段的存在反转了处于相同缩进级别的另一个字段的语义. (4认同)
  • 我通过传递环境变量 OP_ENV(dev、stage 或 prod)来构建/运行。我可以在标签中引用它,对我来说效果很好:`image:avail_imageresizer/build_test_uwsgi:$ {OP_ENV} ` (3认同)

Rya*_*ath 36

我想补充一点,您还可以通过环境变量或 .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:
      ...
Run Code Online (Sandbox Code Playgroud)

docker-compose config验证

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

  • 而不是 ```image: my.image.name:{$TAG}``` 应​​该是 ```image: my.image.name:${TAG}``` (2认同)

Ric*_*ico 16

原始答案2015年11月20日:

截至今天,没有特定标签的选项.Docker compose只是做它的魔法并分配你正在看到的标签.docker tag <image> <tag>调用docker-compose后,您总是可以调用一些脚本.

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

build: ./dir
image: webapp:tag
Run Code Online (Sandbox Code Playgroud)


Doğ*_*ğuş 14

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

docker tag imagename imagename:v1.0

docker tag imagename:v1.0 imagename:v1.1
Run Code Online (Sandbox Code Playgroud)

如果您的存储库附加了多个标签,并且想要删除其中一个标签,则可以使用以下docker rmi命令:

$ docker rmi imagename:v1.0
Untagged imagename:v1.0
Run Code Online (Sandbox Code Playgroud)

参考:


小智 8

你可以试试:

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

Run Code Online (Sandbox Code Playgroud)


Jav*_*ano 7

如果您指定 image 和 build,那么 Compose 会使用 image 中指定的 webapp 和可选标签命名构建的镜像:

build: ./dir
image: webapp:tag
Run Code Online (Sandbox Code Playgroud)

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

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


You*_*eng 5

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

如果平台上不存在该映像,Compose 实现必须尝试根据pull_policy. 具有构建支持的 Compose 实现可以为最终用户提供替代选项,以控制从源构建镜像的拉取优先级,但是拉取镜像必须是默认行为。

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

tags定义必须与构建映像关联的标签映射列表。此列表是对image服务部分中定义的属性的补充

如果image指定,拉取镜像将是默认行为,因此如果您只想使用本地镜像,则不应指定image

tagsinbuild部分是指定本地图像标签的正确位置。

services:
  backend:
    build:
      context: backend
      dockerfile: ../backend.Dockerfile
      tags:
        - "myimage:mytag"
Run Code Online (Sandbox Code Playgroud)