mirror of
https://github.com/syncthing/syncthing.git
synced 2024-11-15 18:08:45 -07:00
b99dee3ac3
This allows environment overrides for our directories. This is advantageous because, apart from the obvious, it means we can set it in the Docker file and not add command line options there. Having the command line option as we did meant that it was impossible to use the Docker image for other commands than `serve` (because that is implied when we see other options on the command line).
50 lines
1.3 KiB
Docker
50 lines
1.3 KiB
Docker
ARG GOVERSION=latest
|
|
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
FROM golang:$GOVERSION AS builder
|
|
ARG BUILD_USER
|
|
ARG BUILD_HOST
|
|
ARG TARGETARCH
|
|
|
|
WORKDIR /src
|
|
COPY . .
|
|
|
|
ENV CGO_ENABLED=0
|
|
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.
|
|
#
|
|
|
|
FROM alpine
|
|
ARG TARGETARCH
|
|
|
|
EXPOSE 8384 22000/tcp 22000/udp 21027/udp
|
|
|
|
VOLUME ["/var/syncthing"]
|
|
|
|
RUN apk add --no-cache ca-certificates curl libcap su-exec tzdata
|
|
|
|
COPY --from=builder /src/syncthing-linux-$TARGETARCH /bin/syncthing
|
|
COPY --from=builder /src/script/docker-entrypoint.sh /bin/entrypoint.sh
|
|
|
|
ENV PUID=1000 PGID=1000 HOME=/var/syncthing
|
|
|
|
HEALTHCHECK --interval=1m --timeout=10s \
|
|
CMD curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
|
|
|
|
ENV STGUIADDRESS=0.0.0.0:8384
|
|
ENV STHOMEDIR=/var/syncthing/config
|
|
RUN chmod 755 /bin/entrypoint.sh
|
|
ENTRYPOINT ["/bin/entrypoint.sh", "/bin/syncthing"]
|