42 lines
1.9 KiB
Docker
42 lines
1.9 KiB
Docker
FROM --platform=$BUILDPLATFORM golang:1.18 AS psiphon_builder
|
|
WORKDIR /go
|
|
LABEL stage=builder
|
|
ARG VERSION=2.0.23
|
|
ARG BUILDPLATFORM
|
|
ARG BUILDOS
|
|
ARG BUILDARCH
|
|
ARG TARGETS
|
|
ENV DIR=/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core \
|
|
GO111MODULE=off \
|
|
CGO_ENABLED=0
|
|
SHELL ["/bin/bash", "-c"]
|
|
RUN TARGET_PALTFORMS=${TARGETS:-"$BUILDOS/$BUILDARCH"}; \
|
|
mkdir -p ${DIR} && \
|
|
curl -sL https://github.com/Psiphon-Labs/psiphon-tunnel-core/archive/refs/tags/v${VERSION}.tar.gz | \
|
|
tar xz -C ${DIR} --strip-components=1 && \
|
|
(IFS=','; for PLATFORM in $TARGET_PALTFORMS; \
|
|
do \
|
|
OS=${PLATFORM%%/*} && \
|
|
ARCH=${PLATFORM#*/} && \
|
|
ARCH=${ARCH%/*} && \
|
|
VERSION=${PLATFORM##*/} && \
|
|
TARGETVARIANT=${VERSION/$ARCH/} && \
|
|
VERSION=${TARGETVER/v/} && \
|
|
GOOS=${OS} GOARCH=${ARCH} go install -a -tags netgo \
|
|
-ldflags '-w -extldflags "-static"' \
|
|
github.com/Psiphon-Labs/psiphon-tunnel-core/ConsoleClient && \
|
|
BINARY=$(find /go/bin/* -name "ConsoleClient*") && \
|
|
mv ${BINARY} /go/psiphon_${OS}_${ARCH}_${TARGETVARIANT}; \
|
|
done)
|
|
|
|
FROM alpine:3.16.0
|
|
RUN mkdir -p /psiphon /config
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
ARG TARGETVARIANT
|
|
COPY start_psiphon psiphon.config /psiphon/
|
|
COPY --from=psiphon_builder /go/psiphon_${TARGETOS}_${TARGETARCH}_${TARGETVARIANT} /psiphon/psiphon
|
|
EXPOSE 8080 1080
|
|
VOLUME /config
|
|
CMD ["/bin/sh", "/psiphon/start_psiphon"]
|