Dockerfile 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. FROM alpine:3.13.5
  2. LABEL maintainer="Amin Vakil <[email protected]>"
  3. ENV VERSION 1.1.6
  4. RUN apk add --no-cache bash
  5. SHELL ["/bin/bash", "-o", "pipefail", "-c"]
  6. RUN buildDeps=( \
  7. curl \
  8. g++ \
  9. gnutls-dev \
  10. gpgme \
  11. libev-dev \
  12. libnl3-dev \
  13. libseccomp-dev \
  14. linux-headers \
  15. linux-pam-dev \
  16. lz4-dev \
  17. make \
  18. readline-dev \
  19. tar \
  20. xz \
  21. ); \
  22. set -x \
  23. && apk add --update --virtual .build-deps "${buildDeps[@]}" \
  24. && curl -SL --connect-timeout 8 --max-time 120 --retry 128 --retry-delay 5 "ftp://ftp.infradead.org/pub/ocserv/ocserv-$VERSION.tar.xz" -o ocserv.tar.xz \
  25. && curl -SL --connect-timeout 8 --max-time 120 --retry 128 --retry-delay 5 "ftp://ftp.infradead.org/pub/ocserv/ocserv-$VERSION.tar.xz.sig" -o ocserv.tar.xz.sig \
  26. && gpg --keyserver keys.gnupg.net --recv-key 96865171 \
  27. && gpg --verify ocserv.tar.xz.sig \
  28. && mkdir -p /usr/src/ocserv \
  29. && tar -xf ocserv.tar.xz -C /usr/src/ocserv --strip-components=1 \
  30. && rm ocserv.tar.xz* \
  31. && cd /usr/src/ocserv \
  32. && ./configure \
  33. && make \
  34. && make install \
  35. && mkdir -p /etc/ocserv \
  36. && cp /usr/src/ocserv/doc/sample.config /etc/ocserv/ocserv.conf \
  37. && cd / \
  38. && rm -fr /usr/src/ocserv \
  39. && runDeps="$( \
  40. scanelf --needed --nobanner /usr/local/sbin/ocserv \
  41. | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
  42. | xargs -r apk info --installed \
  43. | sort -u \
  44. )" \
  45. && readarray runDepsArr <<< "$runDeps" \
  46. && apk add --virtual .run-deps "${runDepsArr[@]}" gnutls-utils iptables libnl3 readline libseccomp-dev lz4-dev \
  47. && apk del .build-deps \
  48. && rm -rf /var/cache/apk/*
  49. # Setup config
  50. COPY routes.txt /tmp/
  51. RUN set -x \
  52. && sed -i 's/\.\/sample\.passwd/\/etc\/ocserv\/ocpasswd/' /etc/ocserv/ocserv.conf \
  53. && sed -i 's/\(max-same-clients = \)2/\110/' /etc/ocserv/ocserv.conf \
  54. && sed -i 's/\.\.\/tests/\/etc\/ocserv/' /etc/ocserv/ocserv.conf \
  55. && sed -i 's/#\(compression.*\)/\1/' /etc/ocserv/ocserv.conf \
  56. && sed -i '/^ipv4-network = /{s/192.168.1.0/192.168.99.0/}' /etc/ocserv/ocserv.conf \
  57. && sed -i 's/192.168.1.2/8.8.8.8/' /etc/ocserv/ocserv.conf \
  58. && sed -i 's/^route/#route/' /etc/ocserv/ocserv.conf \
  59. && sed -i 's/^no-route/#no-route/' /etc/ocserv/ocserv.conf \
  60. && sed -i '/\[vhost:www.example.com\]/,$d' /etc/ocserv/ocserv.conf \
  61. && sed -i '/^cookie-timeout = /{s/300/3600/}' /etc/ocserv/ocserv.conf \
  62. && sed -i 's/^isolate-workers/#isolate-workers/' /etc/ocserv/ocserv.conf \
  63. && cat /tmp/routes.txt >> /etc/ocserv/ocserv.conf \
  64. && rm -rf /tmp/routes.txt
  65. WORKDIR /etc/ocserv
  66. COPY docker-entrypoint.sh /entrypoint.sh
  67. ENTRYPOINT ["/entrypoint.sh"]
  68. EXPOSE 443
  69. CMD ["ocserv", "-c", "/etc/ocserv/ocserv.conf", "-f"]