73.docker-image-build-push.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. set -e
  2. #---------------------------------------------------------------------
  3. #(x.1)参数
  4. args_="
  5. export basePath=/root/temp/svn
  6. export appVersion=1.0
  7. export DOCKER_ImagePrefix=serset/
  8. export DOCKER_USERNAME=serset
  9. export DOCKER_PASSWORD=xxx
  10. # "
  11. #---------------------------------------------------------------------
  12. echo "73.docker-image-build-push.sh -> #1 docker - init buildx"
  13. export builderName="mybuilder__${appVersion}__"
  14. echo "builderName: $builderName"
  15. echo "#1.1 验证是否开启"
  16. docker buildx version
  17. echo "#1.2 启用binfmt_misc"
  18. docker run --privileged --rm tonistiigi/binfmt --install all
  19. echo "#1.3 创建构建器"
  20. if [ ! "$(docker buildx ls | grep $builderName)" ]; then docker buildx create --use --name $builderName --buildkitd-flags '--allow-insecure-entitlement security.insecure'; fi
  21. echo "#1.4 启动构建器"
  22. docker buildx inspect $builderName --bootstrap
  23. echo "#1.5 查看当前使用的构建器及支持的CPU架构"
  24. docker buildx ls
  25. #---------------------------------------------------------------------
  26. echo "73.docker-image-build-push.sh -> #2 docker - build and push"
  27. echo "#2.1 login if UserName is not empty"
  28. if [ -n "$DOCKER_USERNAME" ]; then docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD; fi
  29. dockerPath=$basePath/Publish/release/release/docker-image
  30. for dockerName in `ls $dockerPath`
  31. do
  32. if [ -d $dockerPath/$dockerName ]
  33. then
  34. platform="linux/amd64,linux/arm64,linux/arm/v7"
  35. if [ -f "$dockerPath/$dockerName/Dockerfile.platform" ]; then platform=`cat "$dockerPath/$dockerName/Dockerfile.platform"`; fi
  36. echo "#2.* docker build $dockerName, platform: $platform"
  37. echo "docker buildx build $dockerPath/$dockerName -t ${DOCKER_ImagePrefix}$dockerName:$appVersion -t ${DOCKER_ImagePrefix}$dockerName --platform=$platform --push --builder $builderName"
  38. docker buildx build $dockerPath/$dockerName -t ${DOCKER_ImagePrefix}$dockerName:$appVersion -t ${DOCKER_ImagePrefix}$dockerName --platform=$platform --push --builder $builderName
  39. fi
  40. done
  41. #---------------------------------------------------------------------
  42. echo "73.docker-image-build-push.sh -> #3 docker - remove buildx"
  43. if [ "$(docker buildx ls | grep $builderName)" ]; then docker buildx rm $builderName; fi