wstunnel/Dockerfile
hexlocation 1afda73923
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
/ Release (push) Has been cancelled
/ Build - Windows x86 (push) Has been cancelled
/ Build - Windows x86_64 (push) Has been cancelled
/ Build - Android aarch64 (push) Has been cancelled
/ Build - Android armv7 (push) Has been cancelled
/ Build - Freebsd x86 (push) Has been cancelled
/ Build - Freebsd x86_64 (push) Has been cancelled
/ Build - Linux aarch64 (push) Has been cancelled
/ Build - Linux armv7hf (push) Has been cancelled
/ Build - Linux x86 (push) Has been cancelled
/ Build - Linux x86_64 (push) Has been cancelled
/ Build - MacOS aarch64 (push) Has been cancelled
/ Build - MacOS x86_64 (push) Has been cancelled
yay
2024-12-17 22:11:33 +01:00

64 lines
1.8 KiB
Docker

ARG BUILDER_IMAGE=builder_cache
############################################################
# Cache image with all the deps
FROM rust:1.83-bookworm AS builder_cache
RUN rustup component add rustfmt clippy
WORKDIR /build
COPY . ./
RUN cargo fmt --all -- --check --color=always || (echo "Use cargo fmt to format your code"; exit 1)
RUN cargo clippy --all --all-features -- -D warnings || (echo "Solve your clippy warnings to succeed"; exit 1)
#RUN cargo test --all --all-features
#RUN just test "tcp://localhost:2375" || (echo "Test are failing"; exit 1)
#ENV RUSTFLAGS="-C link-arg=-Wl,--compress-debug-sections=zlib -C force-frame-pointers=yes"
RUN cargo build --tests --all-features
#RUN cargo build --release --all-features
############################################################
# Builder for production image
FROM ${BUILDER_IMAGE} AS builder_release
WORKDIR /build
COPY . ./
ARG BIN_TARGET=--bins
ARG PROFILE=release
#ENV RUSTFLAGS="-C link-arg=-Wl,--compress-debug-sections=zlib -C force-frame-pointers=yes"
RUN cargo build --profile=${PROFILE} ${BIN_TARGET}
############################################################
# Final image
FROM debian:bookworm-slim as final-image
RUN useradd -ms /bin/bash app && \
apt-get update && \
apt-get -y upgrade && \
apt install -y --no-install-recommends ca-certificates dumb-init && \
apt-get clean && \
rm -rf /var/lib/apt/lists
WORKDIR /home/app
ARG PROFILE=release
COPY --from=builder_release /build/target/${PROFILE}/wstunnel wstunnel
ENV RUST_LOG="INFO"
ENV SERVER_PROTOCOL="ws"
ENV SERVER_LISTEN="[::]"
ENV SERVER_PORT="8080"
ENV EXTRA_ARGS="--restrict-to 192.168.2.1:19110"
EXPOSE 8080
USER app
ENTRYPOINT ["/usr/bin/dumb-init", "-v", "--"]
CMD ["/bin/sh", "-c", "exec /home/app/wstunnel server ${EXTRA_ARGS} ${SERVER_PROTOCOL}://${SERVER_LISTEN}:${SERVER_PORT}"]