create_dockerfile.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/bash
  2. kam_packages() {
  3. wget -q -O /tmp/Packages "http://deb.kamailio.org/kamailio${kam_version}/dists/${dist}/main/binary-amd64/Packages"
  4. repo_version=$(awk '/Version:/ { print $2 }' /tmp/Packages| head -1)
  5. awk -vver="${repo_version}" '/Package:/ { print $2"="ver}' /tmp/Packages | xargs
  6. }
  7. create_dockerfile() {
  8. cat >"${DOCKERFILE}" <<EOF
  9. FROM ${docker_tag}
  10. LABEL maintainer="Victor Seva <[email protected]>"
  11. # Important! Update this no-op ENV variable when this Dockerfile
  12. # is updated with the current date. It will force refresh of all
  13. # of the base images and things like 'apt-get update' won't be using
  14. # old cached versions when the Dockerfile is built.
  15. ENV REFRESHED_AT ${DATE}
  16. EOF
  17. cat >>"${DOCKERFILE}" <<EOF
  18. RUN rm -rf /var/lib/apt/lists/* && apt-get update && \
  19. DEBIAN_FRONTEND=noninteractive apt-get install -qq --assume-yes gnupg wget
  20. # kamailio repo
  21. RUN echo "deb http://deb.kamailio.org/kamailio${kam_version} ${dist} main" > \
  22. /etc/apt/sources.list.d/kamailio.list
  23. RUN wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | apt-key add -
  24. EOF
  25. cat >>"${DOCKERFILE}" <<EOF
  26. RUN apt-get update && \
  27. DEBIAN_FRONTEND=noninteractive apt-get install -qq --assume-yes ${PKGS}
  28. VOLUME /etc/kamailio
  29. # clean
  30. RUN apt-get clean && rm -rf /var/lib/apt/lists/*
  31. # set SHM_MEMORY and PKG_MEMORY from ENV
  32. ENV SHM_MEMORY=${SHM_MEMORY:-64}
  33. ENV PKG_MEMORY=${PKG_MEMORY:-8}
  34. ENTRYPOINT kamailio -DD -E -m \${SHM_MEMORY} -M \${PKG_MEMORY}
  35. EOF
  36. }
  37. dist=${1:-stretch}
  38. version=${2:-5.0.3}
  39. DATE=$(date --rfc-3339=date)
  40. case ${dist} in
  41. focal|bionic|xenial|trusty|precise) base=ubuntu ;;
  42. squeeze|wheezy|jessie|stretch|buster|bullseye) base=debian ;;
  43. *)
  44. echo "ERROR: no ${dist} base supported"
  45. exit 1
  46. ;;
  47. esac
  48. case ${dist} in
  49. squeeze|wheezy|jessie|stretch) docker_tag=${base}/eol:${dist};;
  50. *) docker_tag=${base}:${dist}
  51. esac
  52. case ${version} in
  53. 5\.5*)
  54. echo "5.5 series"
  55. kam_version="55"
  56. ;;
  57. 5\.4*)
  58. echo "5.4 series"
  59. kam_version="54"
  60. ;;
  61. 5\.3*)
  62. echo "5.3 series"
  63. kam_version="53"
  64. ;;
  65. 5\.2*)
  66. echo "5.2 series"
  67. kam_version="52"
  68. ;;
  69. 5\.1*)
  70. echo "5.1 series"
  71. kam_version="51"
  72. ;;
  73. 5\.0*)
  74. echo "5.0 series"
  75. kam_version="50"
  76. ;;
  77. 4\.4*)
  78. echo "4.4 series"
  79. kam_version="44"
  80. ;;
  81. *)
  82. echo "unknown kamailio version '${version}'"
  83. exit 1;;
  84. esac
  85. PKGS=$(kam_packages)
  86. mkdir -p "${dist}/${version}"
  87. DOCKERFILE="${dist}/Dockerfile"
  88. create_dockerfile