2023-05-11 18:23:58 +02:00
|
|
|
# Default to Go 1.20
|
|
|
|
ARG GO_VERSION=1.20
|
2020-06-14 20:01:38 +02:00
|
|
|
FROM golang:${GO_VERSION}-alpine as build
|
2019-06-04 18:56:29 +02:00
|
|
|
|
|
|
|
# Necessary to run 'go get' and to compile the linked binary
|
2023-05-19 06:09:37 +02:00
|
|
|
RUN apk add git musl-dev mailcap
|
2014-11-11 15:35:16 +01:00
|
|
|
|
2019-06-04 18:56:29 +02:00
|
|
|
WORKDIR /go/src/github.com/dutchcoders/transfer.sh
|
|
|
|
|
2023-05-23 04:54:02 +02:00
|
|
|
COPY go.mod go.sum ./
|
|
|
|
|
|
|
|
RUN go mod download
|
|
|
|
|
|
|
|
COPY . .
|
2019-06-04 18:56:29 +02:00
|
|
|
|
2014-11-11 15:35:16 +01:00
|
|
|
# build & install server
|
2021-07-09 22:44:07 +02:00
|
|
|
RUN CGO_ENABLED=0 go build -tags netgo -ldflags "-X github.com/dutchcoders/transfer.sh/cmd.Version=$(git describe --tags) -a -s -w -extldflags '-static'" -o /go/bin/transfersh
|
2019-06-04 18:56:29 +02:00
|
|
|
|
2022-04-03 14:55:15 +02:00
|
|
|
ARG PUID=5000 \
|
|
|
|
PGID=5000 \
|
|
|
|
RUNAS
|
|
|
|
|
2022-08-31 08:07:29 +02:00
|
|
|
RUN mkdir -p /tmp/useradd /tmp/empty && \
|
2022-04-03 14:55:15 +02:00
|
|
|
if [ ! -z "$RUNAS" ]; then \
|
|
|
|
echo "${RUNAS}:x:${PUID}:${PGID}::/nonexistent:/sbin/nologin" >> /tmp/useradd/passwd && \
|
|
|
|
echo "${RUNAS}:!:::::::" >> /tmp/useradd/shadow && \
|
|
|
|
echo "${RUNAS}:x:${PGID}:" >> /tmp/useradd/group && \
|
|
|
|
echo "${RUNAS}:!::" >> /tmp/useradd/groupshadow; else touch /tmp/useradd/unused; fi
|
|
|
|
|
2019-06-04 18:56:29 +02:00
|
|
|
FROM scratch AS final
|
|
|
|
LABEL maintainer="Andrea Spacca <andrea.spacca@gmail.com>"
|
2022-04-03 14:55:15 +02:00
|
|
|
ARG RUNAS
|
2014-11-11 15:35:16 +01:00
|
|
|
|
2023-05-19 06:09:37 +02:00
|
|
|
COPY --from=build /etc/mime.types /etc/mime.types
|
2022-08-31 08:07:29 +02:00
|
|
|
COPY --from=build /tmp/empty /tmp
|
2022-04-03 14:55:15 +02:00
|
|
|
COPY --from=build /tmp/useradd/* /etc/
|
|
|
|
COPY --from=build --chown=${RUNAS} /go/bin/transfersh /go/bin/transfersh
|
2019-06-23 13:03:31 +02:00
|
|
|
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
2018-09-22 10:55:02 +02:00
|
|
|
|
2022-04-03 14:55:15 +02:00
|
|
|
USER ${RUNAS}
|
|
|
|
|
2018-09-22 10:55:02 +02:00
|
|
|
ENTRYPOINT ["/go/bin/transfersh", "--listener", ":8080"]
|
2014-11-11 15:35:16 +01:00
|
|
|
|
2018-10-28 19:40:30 +01:00
|
|
|
EXPOSE 8080
|