.detect-daemon-osarch 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. set -e
  3. docker-version-osarch() {
  4. if ! type docker &> /dev/null; then
  5. # docker is not installed
  6. return
  7. fi
  8. local target="$1" # "Client" or "Server"
  9. local fmtStr="{{.${target}.Os}}/{{.${target}.Arch}}"
  10. if docker version -f "$fmtStr" 2> /dev/null; then
  11. # if "docker version -f" works, let's just use that!
  12. return
  13. fi
  14. docker version | awk '
  15. $1 ~ /^(Client|Server):$/ { section = 0 }
  16. $1 == "'"$target"':" { section = 1; next }
  17. section && $1 == "OS/Arch:" { print $2 }
  18. # old versions of Docker
  19. $1 == "OS/Arch" && $2 == "('"${target,,}"'):" { print $3 }
  20. '
  21. }
  22. # Retrieve OS/ARCH of docker daemon, e.g. linux/amd64
  23. export DOCKER_ENGINE_OSARCH="${DOCKER_ENGINE_OSARCH:=$(docker-version-osarch 'Server')}"
  24. export DOCKER_ENGINE_GOOS="${DOCKER_ENGINE_OSARCH%/*}"
  25. export DOCKER_ENGINE_GOARCH="${DOCKER_ENGINE_OSARCH##*/}"
  26. DOCKER_ENGINE_GOARCH=${DOCKER_ENGINE_GOARCH:=amd64}
  27. # and the client, just in case
  28. export DOCKER_CLIENT_OSARCH="$(docker-version-osarch 'Client')"
  29. export DOCKER_CLIENT_GOOS="${DOCKER_CLIENT_OSARCH%/*}"
  30. export DOCKER_CLIENT_GOARCH="${DOCKER_CLIENT_OSARCH##*/}"
  31. DOCKER_CLIENT_GOARCH=${DOCKER_CLIENT_GOARCH:=amd64}
  32. DOCKERFILE='Dockerfile'
  33. if [ "${DOCKER_ENGINE_GOOS:-$DOCKER_CLIENT_GOOS}" = "windows" ]; then
  34. DOCKERFILE='Dockerfile.windows'
  35. fi
  36. export DOCKERFILE