gpt4 book ai didi

azure - 如何从 docker-compose 构建输出中提取图像名称和标签

转载 作者:行者123 更新时间:2023-12-02 07:42:14 26 4
gpt4 key购买 nike

我有以下脚本,希望能够构建并发布到我的 Azure 容器注册表。

echo "env override file:${1}"

cd ../.devcontainer
docker compose --env-file .env --env-file $1 build

#parse image name and tag from above output here into $docker_image and $tag

docker image tag $docker_image:$tag mycontainerreg.azurecr.io/$docker_image:latest
docker push mycontainerreg.azurecr.io/$docker_image:latest

在 compose 命令之后,显示的最后输出是:

=> => 命名为 docker.io/library/my_app:v1.0

我希望能够从该输出中提取图像名称和标签,以便在后续的 docker 命令中使用。我怎样才能做到这一点?

此外,标记的最佳实践是什么?我用版本号标记。但我是否也应该像我一样重新标记为最新版本 - 因为它会简化下游部署?

为了完整起见,我的 docker-compose 相关上下文:

services:
my_app:
container_name: my_app_${ENV}
image: "my_app:${VERSION:-local}"

env 文件是 .env、env_dev 等:

VERSION=v1.0
ENV=local
USER_ID=1000
GROUP_ID=1000
USER_NAME=user1
SVC_PORT=5000
DB_PORT=5434

最佳答案

将输出存储在变量中,让它成为输出

output="=> => naming to docker.io/library/my_app:v1.0"

image_and_tag=$(echo "$output" | awk -F '/' '{print $NF}')
image_name=$(echo "$image_and_tag" | awk -F ':' '{print $1}')
image_tag=$(echo "$image_and_tag" | awk -F ':' '{print $2}')

echo "Image Name: $image_name"
echo "Image Tag: $image_tag"

关于标记:

  • 使用特定版本标签进行生产部署(例如 v1.0、v1.1)。
  • 使用“最新”标签进行测试、开发和内部使用,但是避免将其用于生产。
  • 定期将“最新”标签更新为最新的稳定版本在适当的时候,但确保在部署之前进行彻底的测试到生产。

关于azure - 如何从 docker-compose 构建输出中提取图像名称和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77039347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com