Dockerfile 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. FROM golang:alpine3.19 as build
  2. # Update libraries
  3. RUN apk update && apk upgrade
  4. # Set workdir
  5. WORKDIR /go/src
  6. # Build go package
  7. ADD . /go/src/clamav-rest/
  8. RUN cd /go/src/clamav-rest && go mod download github.com/dutchcoders/go-clamd@latest && go mod init clamav-rest && go mod tidy && go mod vendor && go build -v
  9. FROM alpine:3.20
  10. # Copy compiled clamav-rest binary from build container to production container
  11. COPY --from=build /go/src/clamav-rest/clamav-rest /usr/bin/
  12. # Update & Install tzdata
  13. RUN apk update && apk upgrade && apk add --no-cache tzdata
  14. # Enable Bash & logrotate
  15. RUN apk add bash logrotate
  16. COPY clamavlogrotate /etc/logrotate.d/clamav
  17. # Set timezone to Europe/Zurich
  18. ENV TZ=Europe/Zurich
  19. ADD ./server.* /etc/ssl/clamav-rest/
  20. # Install ClamAV
  21. RUN apk --no-cache add clamav clamav-libunrar \
  22. && mkdir /run/clamav \
  23. && chown clamav:clamav /run/clamav
  24. # Configure clamAV to run in foreground with port 3310
  25. RUN sed -i 's/^#Foreground .*$/Foreground true/g' /etc/clamav/clamd.conf \
  26. && sed -i 's/^#TCPSocket .*$/TCPSocket 3310/g' /etc/clamav/clamd.conf \
  27. && sed -i 's/^#Foreground .*$/Foreground true/g' /etc/clamav/freshclam.conf
  28. RUN freshclam --quiet --no-dns
  29. COPY entrypoint.sh /usr/bin/
  30. RUN mkdir /clamav \
  31. && chown -R clamav.clamav /clamav \
  32. && chown -R clamav.clamav /var/log/clamav \
  33. && chown -R clamav.clamav /run/clamav
  34. ENV PORT=9000
  35. ENV SSL_PORT=9443
  36. ENV MAX_SCAN_SIZE=100M
  37. ENV MAX_FILE_SIZE=25M
  38. ENV MAX_RECURSION=16
  39. ENV MAX_FILES=10000
  40. ENV MAX_EMBEDDEDPE=10M
  41. ENV MAX_HTMLNORMALIZE=10M
  42. ENV MAX_HTMLNOTAGS=2M
  43. ENV MAX_SCRIPTNORMALIZE=5M
  44. ENV MAX_ZIPTYPERCG=1M
  45. ENV MAX_PARTITIONS=50
  46. ENV MAX_ICONSPE=100
  47. ENV PCRE_MATCHLIMIT=100000
  48. ENV PCRE_RECMATCHLIMIT=2000
  49. ENV SIGNATURE_CHECKS=2
  50. USER clamav
  51. ENTRYPOINT [ "entrypoint.sh" ]