1- # :: Distroless
2- FROM alpine AS fs
3- USER root
4- RUN set -ex; \
5- mkdir -p /rootfs/run/proxy; \
6- mkdir -p /rootfs/etc; \
7- echo "root:x:0:0:root:/root:/bin/sh" > /rootfs/etc/passwd; \
8- echo "root:x:0:root" > /rootfs/etc/group;
1+ # :: Util
2+ FROM 11notes/util AS util
93
10- # :: Build // socket-proxy
11- FROM golang:1.24-alpine AS socket-proxy
4+ # :: Build / socket-proxy
5+ FROM golang:1.24-alpine AS build
126 ARG TARGETARCH
137 ENV CGO_ENABLED=0
8+ ENV BUILD_DIR=/go/socket-proxy
9+ ENV BUILD_BIN=${BUILD_DIR}/socket-proxy
10+
1411 USER root
12+ COPY --from=util /usr/local/bin/ /usr/local/bin
1513 COPY ./go/ /go
14+
15+ RUN set -ex; \
16+ apk --update --no-cache add \
17+ build-base \
18+ upx;
19+
1620 RUN set -ex; \
17- cd /go/socket-proxy; \
18- go build -ldflags="-extldflags=-static" -o socket-proxy main.go; \
19- mv socket-proxy /usr/local/bin/socket-proxy;
21+ cd ${BUILD_DIR}; \
22+ mkdir -p /distroless/usr/local/bin; \
23+ go build -ldflags="-extldflags=-static" -o ${BUILD_BIN} main.go; \
24+ eleven strip ${BUILD_BIN}; \
25+ cp ${BUILD_BIN} /distroless/usr/local/bin;
26+
27+ # :: Distroless / socket-proxy
28+ FROM scratch AS distroless-socket-proxy
29+ COPY --from=build /distroless/ /
30+
31+ # :: Build / file system
32+ FROM alpine AS fs
33+ ARG APP_ROOT
34+ USER root
35+
36+ RUN set -ex; \
37+ mkdir -p ${APP_ROOT}/etc;
38+
39+ COPY ./rootfs /
40+
41+ # :: Distroless / file system
42+ FROM scratch AS distroless-fs
43+ ARG APP_ROOT
44+ COPY --from=fs ${APP_ROOT} /${APP_ROOT}
2045
2146# :: Header
2247 FROM 11notes/distroless AS distroless
4368 ENV SOCKET_PROXY_GID=1000
4469
4570 # :: multi-stage
46- COPY --from=distroless / /
47- COPY --from=socket-proxy /usr/local/bin/socket-proxy /
71+ COPY --from=distroless-fs / /
72+ COPY --from=distroless- socket-proxy / /
4873
4974# :: Monitor
50- HEALTHCHECK --interval=5s --timeout=2s CMD ["/ socket-proxy" , "--healthcheck" ]
75+ HEALTHCHECK --interval=5s --timeout=2s CMD ["socket-proxy" , "--healthcheck" ]
5176
5277# :: Start
53- ENTRYPOINT ["/ socket-proxy" ]
78+ ENTRYPOINT ["socket-proxy" ]
0 commit comments