# 3proxy.busybox is fully functional 3proxy build based on busybox:musl # built against wolfSSL and PCRE2. # # Examples are for podman, for docker change 'podman' to 'docker' # #to build: # podman build -f Dockerfile.busybox -t 3proxy.busybox . #to run: # # echo nserver 8.8.8.8 >/path/to/local/config/directory/3proxy.cfg # echo proxy -p3129 >>/path/to/local/config/directory/3proxy.cfg # podman run --read-only -p 3129:3129 -v /path/to/local/config/directory:/etc/3proxy --name 3proxy.busybox 3proxy.busybox # # use "log" without pathname in config to log to stdout. # plugins are located in /usr/local/3proxy/libexec (/libexec for chroot config) # symlinked as /lib and /lib64 in both root and chroot configurations, so no need # to specify full path to plugin. # # Since 0.9.6 image is distroless, no reason to use chroot, chroot # configuration is supported for compatibility only. FROM docker.io/alpine:latest AS wolfssl RUN apk add --no-cache build-base curl autoconf automake libtool linux-headers RUN TAG=$(curl -s https://api.github.com/repos/wolfSSL/wolfssl/releases/latest \ | sed -n 's/.*"tag_name": *"\([^"]*\)".*/\1/p') && \ echo "wolfssl tag: $TAG" && \ curl -sL https://api.github.com/repos/wolfSSL/wolfssl/tarball/$TAG -o /tmp/w.tar.gz && \ mkdir /src && tar -xzf /tmp/w.tar.gz -C /src --strip-components=1 && \ cd /src && \ autoreconf -i && \ ./configure --enable-opensslextra --enable-opensslall --enable-certgen \ --enable-tls13 --enable-sni --enable-session-ticket \ --enable-static --disable-shared --prefix=/usr/local && \ make -j$(nproc) && make install FROM docker.io/alpine:latest AS buildenv RUN apk add --no-cache gcc make musl-dev pcre2-dev COPY --from=wolfssl /usr/local /usr/local COPY . 3proxy RUN cd 3proxy && mkdir -p bin &&\ make -f Makefile.Linux LIBSTATIC=true PAM_CHECK=false WOLFSSL_CHECK=true \ EXTRA_LDFLAGS="-L/usr/local/lib" &&\ strip bin/3proxy &&\ strip bin/*so &&\ mkdir /dist &&\ mkdir /dist/etc &&\ mkdir /dist/etc/3proxy &&\ mkdir /dist/bin &&\ mkdir /dist/usr &&\ mkdir /dist/usr/local &&\ mkdir /dist/usr/local/3proxy &&\ mkdir /dist/usr/local/3proxy/conf &&\ mkdir /dist/usr/local/3proxy/libexec &&\ cp bin/3proxy /dist/bin &&\ cp bin/*.so /dist/usr/local/3proxy/libexec &&\ cp scripts/3proxy.cfg.inchroot /dist/etc/3proxy/3proxy.cfg RUN cd /dist &&\ ln -s /lib lib64 &&\ ln -s /lib usr/lib &&\ ln -s /lib usr/lib64 RUN cp /lib/ld-musl-*.so.* /dist/usr/local/3proxy/libexec || true FROM docker.io/busybox:musl COPY --from=buildenv /dist / RUN mkdir -p /lib /lib64 && ln -sf /usr/local/3proxy/libexec/* /lib/ && cd /usr/local/3proxy/ && ln -s libexec lib && ln -s libexec lib64 && mkdir usr && ln -s libexec usr/lib && ln -s libexec usr/lib64 CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"]