2024-02-17 19:42:33 +00:00
FROM golang:1.22-bookworm as builder
2020-10-04 21:42:33 +00:00
ENV GOFLAGS="-mod=readonly"
2023-10-13 13:55:27 +00:00
RUN apt-get update && apt-get -y upgrade && apt-get install --no-install-recommends -y openssh-server && rm -rf /var/lib/apt/lists/*
2020-10-04 21:42:33 +00:00
RUN mkdir -p /workspace
WORKDIR /workspace
ARG GOPROXY
COPY go.mod go.sum ./
RUN go mod download
2020-10-04 22:17:17 +00:00
ARG COMMIT_SHA
2020-10-07 18:04:02 +00:00
# This ARG allows to disable some optional features and it might be useful if you build the image yourself.
# For example you can disable S3 and GCS support like this:
# --build-arg FEATURES=nos3,nogcs
ARG FEATURES
2020-10-04 21:42:33 +00:00
COPY . .
2020-10-04 22:17:17 +00:00
RUN set -xe && \
2022-09-08 11:44:14 +00:00
export COMMIT_SHA=${COMMIT_SHA:-$(git describe --always --abbrev=8 --dirty)} && \
2022-07-24 14:18:54 +00:00
go build $(if [ -n "${FEATURES}" ]; then echo "-tags ${FEATURES}"; fi) -trimpath -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=${COMMIT_SHA} -X github.com/drakkan/sftpgo/v2/internal/version.date=`date -u +%FT%TZ`" -v -o sftpgo
2020-10-04 21:42:33 +00:00
2022-08-11 09:27:35 +00:00
# Set to "true" to download the "official" plugins in /usr/local/bin
ARG DOWNLOAD_PLUGINS=false
RUN if [ "${DOWNLOAD_PLUGINS}" = "true" ]; then apt-get update && apt-get install --no-install-recommends -y curl && ./docker/scripts/download-plugins.sh; fi
2023-10-13 13:55:27 +00:00
FROM debian:bookworm-slim
2020-10-04 21:42:33 +00:00
2022-03-23 10:35:23 +00:00
# Set to "true" to install jq and the optional git and rsync dependencies
2021-02-07 20:49:04 +00:00
ARG INSTALL_OPTIONAL_PACKAGES=false
2023-10-13 13:55:27 +00:00
RUN apt-get update && apt-get -y upgrade && apt-get install --no-install-recommends -y ca-certificates media-types && rm -rf /var/lib/apt/lists/*
2020-10-04 21:42:33 +00:00
2022-03-23 10:35:23 +00:00
RUN if [ "${INSTALL_OPTIONAL_PACKAGES}" = "true" ]; then apt-get update && apt-get install --no-install-recommends -y jq git rsync && rm -rf /var/lib/apt/lists/*; fi
2021-02-07 20:49:04 +00:00
2021-02-10 18:04:06 +00:00
RUN mkdir -p /etc/sftpgo /var/lib/sftpgo /usr/share/sftpgo /srv/sftpgo/data /srv/sftpgo/backups
2020-10-04 21:42:33 +00:00
2020-10-09 18:25:42 +00:00
RUN groupadd --system -g 1000 sftpgo && \
useradd --system --gid sftpgo --no-create-home \
2020-10-08 19:43:13 +00:00
--home-dir /var/lib/sftpgo --shell /usr/sbin/nologin \
--comment "SFTPGo user" --uid 1000 sftpgo
2020-10-04 21:42:33 +00:00
COPY --from=builder /workspace/sftpgo.json /etc/sftpgo/sftpgo.json
2022-11-18 17:13:03 +00:00
COPY --from=builder /etc/ssh/moduli /etc/sftpgo/moduli
2020-10-05 14:31:22 +00:00
COPY --from=builder /workspace/templates /usr/share/sftpgo/templates
COPY --from=builder /workspace/static /usr/share/sftpgo/static
2021-11-21 08:32:51 +00:00
COPY --from=builder /workspace/openapi /usr/share/sftpgo/openapi
2022-08-11 09:27:35 +00:00
COPY --from=builder /workspace/sftpgo /usr/local/bin/sftpgo-plugin-* /usr/local/bin/
2020-10-04 21:42:33 +00:00
2020-10-14 05:46:36 +00:00
# Log to the stdout so the logs will be available using docker logs
ENV SFTPGO_LOG_FILE_PATH=""
# Modify the default configuration file
2022-02-25 16:38:15 +00:00
RUN sed -i 's|"users_base_dir": "",|"users_base_dir": "/srv/sftpgo/data",|' /etc/sftpgo/sftpgo.json && \
sed -i 's|"backups"|"/srv/sftpgo/backups"|' /etc/sftpgo/sftpgo.json
2020-10-05 13:12:10 +00:00
2021-02-10 18:04:06 +00:00
RUN chown -R sftpgo:sftpgo /etc/sftpgo /srv/sftpgo && chown sftpgo:sftpgo /var/lib/sftpgo && chmod 700 /srv/sftpgo/backups
2020-10-04 21:42:33 +00:00
2020-10-14 05:46:36 +00:00
WORKDIR /var/lib/sftpgo
2020-11-12 10:53:05 +00:00
USER 1000:1000
2020-10-04 21:42:33 +00:00
2020-11-10 22:11:57 +00:00
CMD ["sftpgo", "serve"]