mirror of
https://github.com/gtsteffaniak/filebrowser.git
synced 2026-11-07 10:02:42 -05:00
+5








8f2e8add9a
Co-authored-by: Kevin B. <kurami32_kbm@proton.me> Co-authored-by: spatiumstas <79056064+spatiumstas@users.noreply.github.com> Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Andreas Fehn <fehnomenal@fehn.systems> Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com> Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Co-authored-by: Takahiro Shimizu <anatofuz@gmail.com> Co-authored-by: Graham Steffaniak <gtsteffaniak@users.noreply.github.com> Co-authored-by: Joel Town Road <13539685+hippi345@users.noreply.github.com> Co-authored-by: beemines <3083452174@qq.com> Co-authored-by: Bee mines <Beemines82@gmail.com> Co-authored-by: dweebzxx <134675545+dweebzxx@users.noreply.github.com> Co-authored-by: Stephan Paternotte <Stephan-P@users.noreply.github.com>
51 lines
2.2 KiB
Docker
51 lines
2.2 KiB
Docker
FROM gtstef/ffmpeg:9.0.2-decode AS ffmpeg
|
|
FROM golang:alpine AS base
|
|
ARG VERSION
|
|
ARG REVISION
|
|
WORKDIR /app
|
|
COPY ./backend ./
|
|
RUN apk update && apk add --no-cache gcc musl-dev
|
|
RUN go mod download && go run ./scripts/setup-gofitz-cgo
|
|
ENV CGO_ENABLED=1
|
|
RUN go build -tags analytics,mupdf,musl -ldflags="-w -s \
|
|
-X 'github.com/gtsteffaniak/filebrowser/backend/internal/version.Version=${VERSION}' \
|
|
-X 'github.com/gtsteffaniak/filebrowser/backend/internal/version.CommitSHA=${REVISION}'" \
|
|
-o filebrowser .
|
|
|
|
FROM node:jod-slim AS nbuild
|
|
WORKDIR /build
|
|
COPY ./frontend/package.json ./frontend/package-lock.json ./frontend/
|
|
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates \
|
|
&& git config --global url."https://github.com/".insteadOf "git@github.com:" \
|
|
&& git config --global url."https://github.com/".insteadOf "ssh://git@github.com/"
|
|
RUN cd frontend && npm ci --maxsockets 1
|
|
COPY ./frontend/ ./frontend/
|
|
WORKDIR /build/frontend
|
|
RUN npm run build:docker
|
|
|
|
FROM alpine:latest
|
|
COPY --from=ffmpeg [ "/ffmpeg", "/ffprobe", "/usr/local/bin/" ]
|
|
ENV FILEBROWSER_FFMPEG_PATH="/usr/local/bin/"
|
|
ENV FILEBROWSER_DATABASE_PATH="/home/filebrowser/data/database.sqlite"
|
|
ENV FILEBROWSER_CONFIG="/home/filebrowser/data/config.yaml"
|
|
ENV PATH="$PATH:/home/filebrowser"
|
|
RUN apk --no-cache add ca-certificates mailcap tzdata curl
|
|
RUN adduser -D -s /bin/true -u 1000 filebrowser
|
|
USER filebrowser
|
|
WORKDIR /home/filebrowser
|
|
# copy config to two locations for compatibility
|
|
COPY --from=base --chown=filebrowser:1000 [ "/app/filebrowser", "./" ]
|
|
COPY --from=base --chown=filebrowser:1000 [ "/app/config.yaml", "./data/config.yaml" ]
|
|
COPY --from=base --chown=filebrowser:1000 [ "/app/config.yaml", "./" ]
|
|
COPY --from=base --chown=filebrowser:1000 [ "/app/reduce-rounded-corners.css", "./" ]
|
|
COPY --from=nbuild --chown=filebrowser:1000 [ "/build/backend/internal/web/dist/", "./internal/web/dist/" ]
|
|
## sanity checks
|
|
RUN [ "filebrowser", "version" ]
|
|
RUN [ "ffmpeg", "-version" ]
|
|
RUN [ "ffprobe", "-version" ]
|
|
# exposing default port for auto discovery.
|
|
EXPOSE 80
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
|
|
CMD curl -f http://localhost:80/health || exit 1
|
|
ENTRYPOINT [ "./filebrowser" ]
|