20.docker-build.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. set -e
  2. # bash 20.docker-build.sh
  3. #(x.1)当前路径
  4. curWorkDir=$PWD
  5. curPath=$(dirname $0)
  6. cd $curPath/../..
  7. codePath=$PWD
  8. # codePath=/root/docker/jenkins/workspace/sqler/svn
  9. # export DOCKER_USERNAME=serset
  10. # export DOCKER_PASSWORD=xxx
  11. export name=sqler
  12. export projectPath='Sqler'
  13. echo "(x.2)get version"
  14. version=`grep '<Version>' ${codePath} -r --include *.csproj | grep -oP '>(.*)<' | tr -d '<>'`
  15. # echo $version
  16. tag=$version
  17. echo "(x.3)发布项目 $name:$tag"
  18. docker run -i --rm \
  19. --env LANG=C.UTF-8 \
  20. -v $codePath:/root/code \
  21. serset/dotnet:6.0-sdk \
  22. bash -c "
  23. cd '/root/code/$projectPath';
  24. dotnet build --configuration Release;
  25. dotnet publish --configuration Release --output '/root/code/Publish/06.Docker/制作镜像/$name/app' "
  26. #---------------------------------------------------------------------
  27. #(x.4.1)初始化构建器
  28. #启用 buildx 插件
  29. export DOCKER_CLI_EXPERIMENTAL=enabled
  30. #验证是否开启
  31. docker buildx version
  32. #启用 binfmt_misc
  33. docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
  34. #验证是 binfmt_misc 否开启
  35. ls -al /proc/sys/fs/binfmt_misc/
  36. #创建一个新的构建器
  37. docker buildx create --use --name mybuilder
  38. #启动构建器
  39. docker buildx inspect mybuilder --bootstrap
  40. #查看当前使用的构建器及构建器支持的 CPU 架构,可以看到支持很多 CPU 架构:
  41. docker buildx ls
  42. #---------------------------------------------------------------------
  43. #(x.4.2)构建多架构镜像( arm、arm64 和 amd64 )并推送到 Docker Hub
  44. docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
  45. cd $codePath/Publish/06.Docker/制作镜像/$name
  46. docker buildx build . -t $DOCKER_USERNAME/$name:$tag -t $DOCKER_USERNAME/$name --platform=linux/amd64,linux/arm64,linux/arm/v7 --push
  47. #(x.5)
  48. cd $curWorkDir