docker - 如何在 docker-compose 中使用多个图像标签

标签 docker tags docker-compose

根据thisthis GitHub 问题,目前在使用 docker-compose 构建一个或多个图像时,没有原生方式如何为服务的图像提供多个标签。

我的用例是构建在 docker-compose.yml 文件中定义的图像,并使用一些自定义标签(例如一些构建编号或日期或类似标签)标记它们一次作为最新的

虽然这可以通过使用 docker tag 的普通 docker 轻松实现, docker-compose 只允许在 image key 中设置一个标签.将 docker tagdocker-compose 一起使用对我来说不是一个选择,因为我想将所有与 docker 相关的定义保留在 docker-compose.yml 文件,而不是将它们复制到我的构建脚本中。

docker-compose 实现多个标签的设置,而不必先硬编码/复制图像名称,什么是体面的解决方法?

最佳答案

我有一些使用环境变量的漂亮而干净的解决方案(默认变量值的 bash 语法,在我的情况下它是 latest 但你可以使用任何东西),这是我的作文:

version: '3'
services:
  app:
    build: .
    image: myapp-name:${version:-latest}

使用默认标签构建和推送(如果需要推送到注册表),使用环境变量更改版本并再次构建和推送:

docker-compose build
docker-compose push
export version=0.0.1
docker-compose build
docker-compose push

关于docker - 如何在 docker-compose 中使用多个图像标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327979/

相关文章:

bash - 如何检查本地是否存在带有特定标签的 Docker 镜像?

java - 从Docker容器运行MyBatis迁移的最正确方法

带有角色标签的 ansible import_playbook

docker - 我如何将使用--config选项运行的docker应用于docker compose

php - 教义迁移-连接被拒绝

python - 通过 Windows 控制台使用 Docker : includes invalid characters $PWD for a local volume name

git - 如何删除多个标签?

java - JAXB:是否可以处理未知元素

ruby-on-rails - docker :错误:服务 'app'未能建立:复制失败:stat/var/lib/docker/tmp/docker-builder818844007/entrypoint.sh:没有这样的文件或目录

docker - 从本地主机上另一个容器内的容器访问 docker 端口