写一个脚本,docker build打包失败,就不push

205 阅读1分钟

为了编写一个脚本,在Docker构建(docker build)失败时不执行推送(docker push),你可以使用Shell脚本(如Bash)来管理这个过程。以下是一个简单的示例脚本,展示了如何在构建Docker镜像时检查是否成功,并根据结果决定是否推送镜像。

#!/bin/bash  
  
# 配置变量  
IMAGE_NAME="your-image-name"  
IMAGE_TAG="your-image-tag"  
DOCKERFILE_PATH="./Dockerfile"  
  
# 构建Docker镜像  
echo "开始构建Docker镜像 $IMAGE_NAME:$IMAGE_TAG ..."  
docker build -t "$IMAGE_NAME:$IMAGE_TAG" -f "$DOCKERFILE_PATH"  
  
# 检查构建是否成功  
if [ $? -ne 0 ]; then  
  echo "Docker镜像构建失败!"  
  exit 1  
fi  
  
# 如果构建成功,则推送Docker镜像  
echo "Docker镜像构建成功,开始推送 $IMAGE_NAME:$IMAGE_TAG ..."  
docker push "$IMAGE_NAME:$IMAGE_TAG"  
  
# 检查推送是否成功  
if [ $? -ne 0 ]; then  
  echo "Docker镜像推送失败!"  
  exit 1  
fi  
  
echo "Docker镜像 $IMAGE_NAME:$IMAGE_TAG 推送成功!"

在这个脚本中:

  1. 我们定义了镜像的名称(IMAGE_NAME)、标签(IMAGE_TAG)和Dockerfile的路径(DOCKERFILE_PATH)。
  2. 使用docker build命令构建镜像,并检查其退出状态码($?)。如果状态码不为0,表示构建失败,脚本将输出错误信息并退出。
  3. 如果构建成功,脚本将继续执行docker push命令来推送镜像。
  4. 同样,推送命令后也检查了退出状态码,以确定推送是否成功。

要运行这个脚本,你需要将其保存为一个文件(例如build_and_push.sh),然后给它执行权限,并运行它:

chmod +x build_and_push.sh  
./build_and_push.sh

请确保你已经登录到Docker Hub或你正在使用的任何Docker镜像仓库,因为docker push命令需要认证信息。你可以使用docker login命令来登录