为了编写一个脚本,在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 推送成功!"
在这个脚本中:
- 我们定义了镜像的名称(
IMAGE_NAME)、标签(IMAGE_TAG)和Dockerfile的路径(DOCKERFILE_PATH)。 - 使用
docker build命令构建镜像,并检查其退出状态码($?)。如果状态码不为0,表示构建失败,脚本将输出错误信息并退出。 - 如果构建成功,脚本将继续执行
docker push命令来推送镜像。 - 同样,推送命令后也检查了退出状态码,以确定推送是否成功。
要运行这个脚本,你需要将其保存为一个文件(例如build_and_push.sh),然后给它执行权限,并运行它:
chmod +x build_and_push.sh
./build_and_push.sh
请确保你已经登录到Docker Hub或你正在使用的任何Docker镜像仓库,因为docker push命令需要认证信息。你可以使用docker login命令来登录