62 lines
1.7 KiB
Text
62 lines
1.7 KiB
Text
|
ARG BUILDER_IMAGE=builder_cache
|
||
|
ARG ALPINE_IMAGE_TAG=3.18
|
||
|
|
||
|
############################################################
|
||
|
# Cache image with all the deps
|
||
|
FROM rust:1.73-alpine${ALPINE_IMAGE_TAG} AS builder_cache
|
||
|
|
||
|
RUN apk add musl-dev
|
||
|
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 alpine:${ALPINE_IMAGE_TAG} as final-image
|
||
|
|
||
|
RUN apk add dumb-init && \
|
||
|
adduser -Ds /bin/sh app
|
||
|
|
||
|
WORKDIR /home/app
|
||
|
|
||
|
ARG PROFILE=release
|
||
|
COPY --from=builder_release /build/target/${PROFILE}/wstunnel wstunnel
|
||
|
|
||
|
ENV RUST_LOG="INFO"
|
||
|
ENV SERVER_PROTOCOL="wss"
|
||
|
ENV SERVER_LISTEN="[::]"
|
||
|
ENV SERVER_PORT="8080"
|
||
|
EXPOSE 8080
|
||
|
|
||
|
USER app
|
||
|
|
||
|
ENTRYPOINT ["/usr/bin/dumb-init", "-v", "--"]
|
||
|
CMD ["/bin/sh", "-c", "exec /home/app/wstunnel server ${SERVER_PROTOCOL}://${SERVER_LISTEN}:${SERVER_PORT}"]
|