mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-23 02:25:40 +08:00

- Add support to ARM64, ARM/v7 and ARM/v6 devices - Remove hardcoded "/lib/x86_64-linux-gnu" path - Move libdl.so.* to a common location - Format code to keep consistency between dockerfiles
56 lines
2.5 KiB
Docker
56 lines
2.5 KiB
Docker
# 3proxy.full is fully functional 3proxy build based on busibox:glibc
|
|
#
|
|
#to build:
|
|
# docker build -f Dockerfile.full -t 3proxy.full .
|
|
#to run:
|
|
# by default 3proxy uses safe chroot environment with chroot to /usr/local/3proxy with uid/gid 65535/65535 and expects
|
|
# configuration file to be placed in /usr/local/etc/3proxy.
|
|
# Paths in configuration file must be relative to /usr/local/3proxy, that is use /logs instead of
|
|
# /usr/local/3proxy/logs. nserver in chroot is required for DNS resolution. An example:
|
|
#
|
|
# echo nserver 8.8.8.8 >/path/to/local/config/directory/3proxy.cfg
|
|
# echo proxy -p3129 >>/path/to/local/config/directory/3proxy.cfg
|
|
# docker run -p 3129:3129 -v /path/to/local/config/directory:/usr/local/3proxy/conf -name 3proxy.full 3proxy.full
|
|
#
|
|
# /path/to/local/config/directory in this example must conrain 3proxy.cfg
|
|
# if you need 3proxy to be executed without chroot with root permissions, replace /etc/3proxy/3proxy.cfg by e.g. mounting config
|
|
# dir to /etc/3proxy ot by providing config file /etc/3proxy/3proxy.cfg
|
|
# docker run -p 3129:3129 -v /path/to/local/config/directory:/etc/3proxy -name 3proxy.full 3proxy.full
|
|
#
|
|
# use "log" without pathname in config to log to stdout.
|
|
# plugins are located in /usr/local/3proxy/libexec (/libexec for chroot config).
|
|
|
|
|
|
FROM gcc AS buildenv
|
|
COPY . 3proxy
|
|
RUN cd 3proxy &&\
|
|
echo "">> Makefile.Linux &&\
|
|
echo PLUGINS = StringsPlugin TrafficPlugin PCREPlugin TransparentPlugin SSLPlugin>>Makefile.Linux &&\
|
|
echo LIBS = -l:libcrypto.a -l:libssl.a -ldl >>Makefile.Linux &&\
|
|
make -f Makefile.Linux &&\
|
|
strip bin/3proxy &&\
|
|
strip bin/StringsPlugin.ld.so &&\
|
|
strip bin/TrafficPlugin.ld.so &&\
|
|
strip bin/PCREPlugin.ld.so &&\
|
|
strip bin/TransparentPlugin.ld.so &&\
|
|
strip bin/SSLPlugin.ld.so &&\
|
|
mkdir /usr/local/lib/3proxy &&\
|
|
cp "/lib/`gcc -dumpmachine`"/libdl.so.* /usr/local/lib/3proxy/
|
|
|
|
FROM busybox:glibc
|
|
COPY --from=buildenv /usr/local/lib/3proxy/libdl.so.* /lib/
|
|
COPY --from=buildenv 3proxy/bin/3proxy /bin/
|
|
COPY --from=buildenv 3proxy/bin/*.ld.so /usr/local/3proxy/libexec/
|
|
RUN mkdir /usr/local/3proxy/logs &&\
|
|
mkdir /usr/local/3proxy/conf &&\
|
|
chown -R 65535:65535 /usr/local/3proxy &&\
|
|
chmod -R 550 /usr/local/3proxy &&\
|
|
chmod 750 /usr/local/3proxy/logs &&\
|
|
chmod -R 555 /usr/local/3proxy/libexec &&\
|
|
chown -R root /usr/local/3proxy/libexec &&\
|
|
mkdir /etc/3proxy/ &&\
|
|
echo chroot /usr/local/3proxy 65535 65535 >/etc/3proxy/3proxy.cfg &&\
|
|
echo include /conf/3proxy.cfg >>/etc/3proxy/3proxy.cfg &&\
|
|
chmod 440 /etc/3proxy/3proxy.cfg
|
|
CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"]
|