75.docker-image-build-push_cross.bash 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. set -e
  2. #---------------------------------------------------------------------
  3. # args
  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. export DOCKER_BuildxExtArgs=
  11. # "
  12. #---------------------------------------------------------------------
  13. echo "75.docker-image-build-push_cross.bash -> #1 docker - init buildx"
  14. export builderName="mybuilder__${appVersion}__"
  15. echo "builderName: $builderName"
  16. echo "#1.1 docker buildx version"
  17. docker buildx version
  18. echo "#1.2 install binfmt_misc"
  19. docker run --privileged --rm tonistiigi/binfmt --install all
  20. echo "#1.3 create builder"
  21. if [ ! "$(docker buildx ls | grep $builderName)" ]; then docker buildx create --use --name $builderName --buildkitd-flags '--allow-insecure-entitlement security.insecure'; fi
  22. echo "#1.4 start builder"
  23. docker buildx inspect $builderName --bootstrap
  24. echo "#1.5 show builders and supported CPU platform"
  25. docker buildx ls
  26. #---------------------------------------------------------------------
  27. echo "75.docker-image-build-push_cross.bash -> #2 docker - build and push"
  28. echo "#2.1 login if UserName is not empty"
  29. if [ -n "$DOCKER_USERNAME" ]; then docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD; fi
  30. dockerPath=$basePath/Publish/release/release/docker-image
  31. for dockerName in `ls $dockerPath`
  32. do
  33. if [ -d $dockerPath/$dockerName ]
  34. then
  35. platform="linux/amd64,linux/arm64,linux/arm/v7"
  36. if [ -f "$dockerPath/$dockerName/Dockerfile.platform" ]; then platform=`cat "$dockerPath/$dockerName/Dockerfile.platform"`; fi
  37. echo "#2.* docker build $dockerName, platform: $platform"
  38. echo "docker buildx build --allow security.insecure $dockerPath/$dockerName -t ${DOCKER_ImagePrefix}$dockerName:$appVersion -t ${DOCKER_ImagePrefix}$dockerName --platform=$platform --push $DOCKER_BuildxExtArgs --builder $builderName"
  39. docker buildx build --allow security.insecure $dockerPath/$dockerName -t ${DOCKER_ImagePrefix}$dockerName:$appVersion -t ${DOCKER_ImagePrefix}$dockerName --platform=$platform --push $DOCKER_BuildxExtArgs --builder $builderName
  40. fi
  41. done
  42. #---------------------------------------------------------------------
  43. echo "75.docker-image-build-push_cross.bash -> #3 remove builder"
  44. if [ "$(docker buildx ls | grep $builderName)" ]; then docker buildx rm $builderName; fi