Dockerfile.full 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # 3proxy.full is fully functional 3proxy build based on busibox:glibc
  2. #
  3. #to build:
  4. # docker build -f Dockerfile.full -t 3proxy.full .
  5. #to run:
  6. # by default 3proxy uses safe chroot environment with chroot to /usr/local/3proxy with uid/gid 65535/65535 and expects
  7. # configuration file to be placed in /usr/local/etc/3proxy.
  8. # Paths in configuration file must be relative to /usr/local/3proxy, that is use /logs instead of
  9. # /usr/local/3proxy/logs. nserver in chroot is required for DNS resolution. An example:
  10. #
  11. # echo nserver 8.8.8.8 >/path/to/local/config/directory/3proxy.cfg
  12. # echo proxy -p3129 >>/path/to/local/config/directory/3proxy.cfg
  13. # docker run -p 3129:3129 -v /path/to/local/config/directory:/usr/local/3proxy/conf -name 3proxy.full 3proxy.full
  14. #
  15. # /path/to/local/config/directory in this example must conrain 3proxy.cfg
  16. # if you need 3proxy to be executed without chroot with root permissions, replace /etc/3proxy/3proxy.cfg by e.g. mounting config
  17. # dir to /etc/3proxy ot by providing config file /etc/3proxy/3proxy.cfg
  18. # docker run -p 3129:3129 -v /path/to/local/config/directory:/etc/3proxy -name 3proxy.full 3proxy.full
  19. #
  20. # use "log" without pathname in config to log to stdout.
  21. # plugins are located in /usr/local/3proxy/libexec (/libexec for chroot config).
  22. FROM gcc AS buildenv
  23. COPY . 3proxy
  24. RUN cd 3proxy &&\
  25. echo "">> Makefile.Linux &&\
  26. echo PLUGINS = StringsPlugin TrafficPlugin PCREPlugin TransparentPlugin SSLPlugin>>Makefile.Linux &&\
  27. echo LIBS = -l:libcrypto.a -l:libssl.a -ldl >>Makefile.Linux &&\
  28. make -f Makefile.Linux &&\
  29. strip bin/3proxy &&\
  30. strip bin/StringsPlugin.ld.so &&\
  31. strip bin/TrafficPlugin.ld.so &&\
  32. strip bin/PCREPlugin.ld.so &&\
  33. strip bin/TransparentPlugin.ld.so &&\
  34. strip bin/SSLPlugin.ld.so
  35. FROM busybox:glibc
  36. COPY --from=buildenv /lib/x86_64-linux-gnu/libdl.so.* /lib/
  37. COPY --from=buildenv 3proxy/bin/3proxy /bin/
  38. COPY --from=buildenv 3proxy/bin/*.ld.so /usr/local/3proxy/libexec/
  39. RUN mkdir /usr/local/3proxy/logs &&\
  40. mkdir /usr/local/3proxy/conf &&\
  41. chown -R 65535:65535 /usr/local/3proxy &&\
  42. chmod -R 550 /usr/local/3proxy &&\
  43. chmod 750 /usr/local/3proxy/logs &&\
  44. chmod -R 555 /usr/local/3proxy/libexec &&\
  45. chown -R root /usr/local/3proxy/libexec &&\
  46. mkdir /etc/3proxy/ &&\
  47. echo chroot /usr/local/3proxy 65535 65535 >/etc/3proxy/3proxy.cfg &&\
  48. echo include /conf/3proxy.cfg >>/etc/3proxy/3proxy.cfg &&\
  49. chmod 440 /etc/3proxy/3proxy.cfg
  50. CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"]