43 lines
1.2 KiB
Docker
43 lines
1.2 KiB
Docker
FROM golang:1.25-alpine AS backend-builder
|
|
WORKDIR /app
|
|
ARG TARGETARCH
|
|
ARG TARGETVARIANT
|
|
ENV CGO_ENABLED=1
|
|
ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE"
|
|
ENV GOARCH=$TARGETARCH
|
|
|
|
RUN apk update && apk add --no-cache \
|
|
gcc \
|
|
musl-dev \
|
|
libc-dev \
|
|
make \
|
|
git \
|
|
wget \
|
|
unzip \
|
|
bash \
|
|
curl
|
|
|
|
ENV CC=gcc
|
|
|
|
RUN CRONET_ARCH="$TARGETARCH" && \
|
|
CRONET_URL="https://github.com/SagerNet/cronet-go/releases/latest/download/libcronet-linux-${CRONET_ARCH}.so"; \
|
|
echo "Downloading $CRONET_URL" && \
|
|
wget -q -O ./libcronet.so "$CRONET_URL" && \
|
|
chmod 755 ./libcronet.so
|
|
|
|
COPY . .
|
|
COPY frontend_dist/ /app/web/html/
|
|
|
|
RUN if [ "$TARGETARCH" = "arm" ]; then export GOARM=7; [ "$TARGETVARIANT" = "v6" ] && export GOARM=6; fi; \
|
|
go build -ldflags="-w -s" \
|
|
-tags "with_quic,with_grpc,with_utls,with_acme,with_gvisor,with_naive_outbound,with_purego,with_tailscale" \
|
|
-o sui main.go
|
|
|
|
FROM alpine
|
|
LABEL org.opencontainers.image.authors="alireza7@gmail.com"
|
|
ENV TZ=Asia/Tehran
|
|
WORKDIR /app
|
|
RUN set -ex && apk add --no-cache --upgrade bash tzdata ca-certificates nftables
|
|
COPY --from=backend-builder /app/sui /app/libcronet.so /app/
|
|
COPY entrypoint.sh /app/
|
|
ENTRYPOINT [ "./entrypoint.sh" ] |