脚本如下
# cat build/docker.sh
#!/usr/bin/env bash
# 获取当前分支名
BRANCH=`git rev-parse --abbrev-ref HEAD`
# 获取git提交的标识符用于Docker镜像的标签
BUILD_TAG="$(git rev-parse --short $BRANCH)"
HARBOR_URL="harbor.xxx.com"
echo "Tag is ${BUILD_TAG}"
# 获取当前的绝对路径
PROJECT_HOME=$(pwd)
# 定义Docker镜像名
APP_NAME="classroom_python"
# 导入有Harbor权限的用户名和密码
if [ ! -f "${PROJECT_HOME}/build/user.sh" ]; then
echo "please import docker user info..."
exit
fi
. "${PROJECT_HOME}"/build/user.sh
# 构建Docker镜像并且打一个tag
docker build . -t ${HARBOR_URL}/app/"${APP_NAME}":"${BUILD_TAG}"
# 登录私有Harbor
docker login -u "${hub_user}" -p "${hub_password}" harbor.xiaoxingcloud.com
# 推送Docker镜像
docker push ${HARBOR_URL}/app/"${APP_NAME}":"${BUILD_TAG}"
# 登出Harbor私有仓库
# docker logout
# 修改deployment配置文件
sed "s#<BUILD_TAG>#${BUILD_TAG}#g" build/deployment.yaml > ./deployment.yaml
# 应用文件部署
kubectl apply -f deployment.yaml
前提条件
- Dockerfile配置文件已经配置好了
- user.sh设置了harbor仓库的用户名和密码信息
- deployment配置文件可以正常运行
- 运行脚本的用户有调用k8s集群的权限