2020-05-04 03:45:36 -07:00
|
|
|
ARG GOVERSION=latest
|
2023-06-14 00:23:52 -07:00
|
|
|
|
|
|
|
#
|
|
|
|
# Maybe build Syncthing. This is a bit ugly as we can't make an entire
|
|
|
|
# section of the Dockerfile conditional, so we end up always pulling the
|
|
|
|
# golang image as builder. Then we check if the executable we need already
|
|
|
|
# exists (pre-built) otherwise we build it.
|
|
|
|
#
|
|
|
|
|
2020-05-04 03:45:36 -07:00
|
|
|
FROM golang:$GOVERSION AS builder
|
2023-06-14 00:23:52 -07:00
|
|
|
ARG BUILD_USER
|
|
|
|
ARG BUILD_HOST
|
|
|
|
ARG TARGETARCH
|
2018-02-04 14:43:14 -07:00
|
|
|
|
2019-01-31 12:32:08 -07:00
|
|
|
WORKDIR /src
|
2018-02-04 14:43:14 -07:00
|
|
|
COPY . .
|
|
|
|
|
|
|
|
ENV CGO_ENABLED=0
|
2023-06-14 00:23:52 -07:00
|
|
|
RUN if [ ! -f syncthing-linux-$TARGETARCH ] ; then \
|
|
|
|
go run build.go -no-upgrade build syncthing ; \
|
|
|
|
mv syncthing syncthing-linux-$TARGETARCH ; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# The rest of the Dockerfile uses the binary from the builder, prebuilt or
|
|
|
|
# not.
|
|
|
|
#
|
2018-02-04 14:43:14 -07:00
|
|
|
|
|
|
|
FROM alpine
|
2023-06-14 00:23:52 -07:00
|
|
|
ARG TARGETARCH
|
2018-02-04 14:43:14 -07:00
|
|
|
|
2023-11-13 23:46:14 -07:00
|
|
|
LABEL org.opencontainers.image.authors="The Syncthing Project" \
|
|
|
|
org.opencontainers.image.url="https://syncthing.net" \
|
|
|
|
org.opencontainers.image.documentation="https://docs.syncthing.net" \
|
|
|
|
org.opencontainers.image.source="https://github.com/syncthing/syncthing" \
|
2023-11-14 00:17:34 -07:00
|
|
|
org.opencontainers.image.vendor="The Syncthing Project" \
|
|
|
|
org.opencontainers.image.licenses="MPL-2.0" \
|
2023-11-13 23:46:14 -07:00
|
|
|
org.opencontainers.image.title="Syncthing"
|
|
|
|
|
2021-03-02 12:42:25 -07:00
|
|
|
EXPOSE 8384 22000/tcp 22000/udp 21027/udp
|
2018-05-05 01:28:19 -07:00
|
|
|
|
|
|
|
VOLUME ["/var/syncthing"]
|
|
|
|
|
2022-11-03 12:43:32 -07:00
|
|
|
RUN apk add --no-cache ca-certificates curl libcap su-exec tzdata
|
2018-02-04 14:43:14 -07:00
|
|
|
|
2023-06-14 00:23:52 -07:00
|
|
|
COPY --from=builder /src/syncthing-linux-$TARGETARCH /bin/syncthing
|
2019-05-17 23:43:53 -07:00
|
|
|
COPY --from=builder /src/script/docker-entrypoint.sh /bin/entrypoint.sh
|
2018-02-04 14:43:14 -07:00
|
|
|
|
2022-10-01 23:50:27 -07:00
|
|
|
ENV PUID=1000 PGID=1000 HOME=/var/syncthing
|
2018-02-04 14:43:14 -07:00
|
|
|
|
2020-05-15 03:59:22 -07:00
|
|
|
HEALTHCHECK --interval=1m --timeout=10s \
|
2022-11-03 12:43:32 -07:00
|
|
|
CMD curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
|
2020-05-15 03:59:22 -07:00
|
|
|
|
2019-09-22 03:33:29 -07:00
|
|
|
ENV STGUIADDRESS=0.0.0.0:8384
|
2023-06-27 22:03:36 -07:00
|
|
|
ENV STHOMEDIR=/var/syncthing/config
|
2022-12-16 00:16:22 -07:00
|
|
|
RUN chmod 755 /bin/entrypoint.sh
|
2023-06-27 22:03:36 -07:00
|
|
|
ENTRYPOINT ["/bin/entrypoint.sh", "/bin/syncthing"]
|