FROM --platform=$BUILDPLATFORM gitea.woggioni.net/woggioni/arch-builder:rust-full AS base ARG VERSION TARGETPLATFORM BUILDPLATFORM WORKDIR /home/luser/shadowsocks-rust RUN git clone --depth 1 --branch "v${VERSION}" https://github.com/shadowsocks/shadowsocks-rust.git . FROM base AS builder-linux_386 ENV RUST_TARGET="i686-unknown-linux-musl" FROM base AS builder-linux_amd64 ENV RUST_TARGET="x86_64-unknown-linux-musl" ENV CC_x86_64-unknown-linux-musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-gcc ENV CXX_x86_64-unknown-linux-musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-g++ FROM base AS builder-linux_arm64 ENV RUST_TARGET="aarch64-unknown-linux-musl" ENV CC_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-gcc ENV CXX_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-g++ FROM base AS builder-linux_arm_v7 ENV RUST_TARGET="arm-unknown-linux-musleabihf" ENV CC_armv7_unknown_linux_musleabihf=/opt/x-tools/arm-unknown-linux-musleabi/bin/arm-unknown-linux-musleabi-gcc ENV CXX_armv7_unknown_linux_musleabihf=/opt/x-tools/arm-unknown-linux-musleabi/bin/arm-unknown-linux-musleabi-g++ FROM builder-${TARGETPLATFORM/\//_} AS builder RUN rustup target add $RUST_TARGET RUN cargo +stable build --locked --target "$RUST_TARGET" --release --features "full,aead-cipher-extra,aead-cipher-2022-extra,security-replay-attack-detect" \ && mv target/$RUST_TARGET/release/ss* target/release/ COPY download_v2ray.sh download_v2ray.sh RUN ./download_v2ray.sh "$TARGETPLATFORM" COPY download_xray.sh download_xray.sh RUN ./download_xray.sh "$TARGETPLATFORM" FROM busybox:musl AS sslocal # NOTE: Please be careful to change the path of these binaries, refer to #1149 for more information. COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/target/release/sslocal /usr/bin/ COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ COPY --from=builder --chown=root:root /tmp/v2ray-plugin /usr/bin/v2ray-plugin COPY --from=builder --chown=root:root /tmp/xray-plugin /usr/bin/xray-plugin ENTRYPOINT [ "docker-entrypoint.sh" ] CMD [ "sslocal", "--log-without-time", "-c", "/etc/shadowsocks-rust/config.json" ] FROM busybox:musl AS ssserver COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/target/release/ssserver /usr/bin/ COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ COPY --from=builder /tmp/v2ray-plugin /usr/bin/v2ray-plugin COPY --from=builder /tmp/xray-plugin /usr/bin/xray-plugin ENTRYPOINT [ "docker-entrypoint.sh" ] CMD [ "ssserver", "--log-without-time", "-a", "nobody", "-c", "/etc/shadowsocks-rust/config.json" ]