create_dockerfile.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 ${base}:${dist}
  10. 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. if [ -n "${archived}" ] ; then
  18. cat >>"${DOCKERFILE}" <<EOF
  19. RUN echo "deb http://archive.debian.org/debian ${dist} main" > \
  20. /etc/apt/sources.list; \
  21. echo "deb http://archive.debian.org/debian ${dist}-lts main" >> \
  22. /etc/apt/sources.list ; \
  23. echo "Acquire::Check-Valid-Until false;" >> /etc/apt/apt.conf
  24. EOF
  25. elif [ "${base}" = "debian" ] ; then
  26. cat >>"${DOCKERFILE}" <<EOF
  27. # avoid httpredir errors
  28. RUN sed -i 's/httpredir/deb/g' /etc/apt/sources.list
  29. EOF
  30. fi
  31. cat >>"${DOCKERFILE}" <<EOF
  32. RUN rm -rf /var/lib/apt/lists/* && apt-get update && \
  33. apt-get install --assume-yes gnupg wget
  34. # kamailio repo
  35. RUN echo "deb http://deb.kamailio.org/kamailio${kam_version} ${dist} main" > \
  36. /etc/apt/sources.list.d/kamailio.list
  37. RUN wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | apt-key add -
  38. EOF
  39. cat >>"${DOCKERFILE}" <<EOF
  40. RUN apt-get update && apt-get install --assume-yes ${PKGS}
  41. VOLUME /etc/kamailio
  42. # clean
  43. RUN apt-get clean && rm -rf /var/lib/apt/lists/*
  44. ENTRYPOINT ["kamailio", "-DD", "-E"]
  45. EOF
  46. }
  47. dist=${1:-stretch}
  48. version=${2:-5.0.3}
  49. DATE=$(date --rfc-3339=date)
  50. case ${dist} in
  51. bionic|xenial|trusty|precise) base=ubuntu ;;
  52. squeeze|wheezy|jessie|stretch|buster) base=debian ;;
  53. *)
  54. echo "ERROR: no ${dist} base supported"
  55. exit 1
  56. ;;
  57. esac
  58. case ${dist} in
  59. squeeze) archived=true ;;
  60. esac
  61. case ${version} in
  62. 5\.3*)
  63. echo "5.3 series"
  64. kam_version="53"
  65. ;;
  66. 5\.2*)
  67. echo "5.2 series"
  68. kam_version="52"
  69. ;;
  70. 5\.1*)
  71. echo "5.1 series"
  72. kam_version="51"
  73. ;;
  74. 5\.0*)
  75. echo "5.0 series"
  76. kam_version="50"
  77. ;;
  78. 4\.4*)
  79. echo "4.4 series"
  80. kam_version="44"
  81. ;;
  82. *)
  83. echo "unknown kamailio version '${version}'"
  84. exit 1;;
  85. esac
  86. PKGS=$(kam_packages)
  87. mkdir -p "${dist}/${version}"
  88. DOCKERFILE="${dist}/Dockerfile"
  89. create_dockerfile