Dockerfile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. FROM ubuntu:latest as smartdns-builder
  2. LABEL previous-stage=smartdns-builder
  3. # prepare builder
  4. ARG OPENSSL_VER=1.1.1f
  5. RUN apt update && \
  6. apt install -y perl curl make musl-tools musl-dev && \
  7. ln -s /usr/include/linux /usr/include/$(uname -m)-linux-musl && \
  8. ln -s /usr/include/asm-generic /usr/include/$(uname -m)-linux-musl && \
  9. ln -s /usr/include/$(uname -m)-linux-gnu/asm /usr/include/$(uname -m)-linux-musl && \
  10. \
  11. mkdir -p /build/openssl && \
  12. cd /build/openssl && \
  13. curl -sSL http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_${OPENSSL_VER}.orig.tar.gz | tar --strip-components=1 -zxv && \
  14. \
  15. export CC=musl-gcc && \
  16. if [ "$(uname -m)" = "aarch64" ]; then \
  17. ./config --prefix=/opt/build no-tests -mno-outline-atomics ; \
  18. else \
  19. ./config --prefix=/opt/build no-tests ; \
  20. fi && \
  21. make all -j8 && make install_sw && \
  22. cd / && rm -rf /build
  23. # do make
  24. COPY . /build/smartdns/
  25. RUN cd /build/smartdns && \
  26. export CC=musl-gcc && \
  27. export CFLAGS="-I /opt/build/include" && \
  28. export LDFLAGS="-L /opt/build/lib" && \
  29. sh ./package/build-pkg.sh --platform linux --arch `dpkg --print-architecture` --static && \
  30. \
  31. ( cd package && tar -xvf *.tar.gz && chmod a+x smartdns/etc/init.d/smartdns ) && \
  32. \
  33. mkdir -p /release/var/log /release/var/run && \
  34. cp package/smartdns/etc /release/ -a && \
  35. cp package/smartdns/usr /release/ -a && \
  36. cd / && rm -rf /build
  37. FROM busybox:latest
  38. COPY --from=smartdns-builder /release/ /
  39. EXPOSE 53/udp
  40. VOLUME "/etc/smartdns/"
  41. CMD ["/usr/sbin/smartdns", "-f", "-x"]