59 lines
1.4 KiB
Docker
59 lines
1.4 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
FROM node:20-bookworm-slim AS web
|
|
|
|
WORKDIR /src/web
|
|
|
|
COPY web/package.json web/package-lock.json ./
|
|
RUN npm config set registry https://registry.npmmirror.com \
|
|
&& npm ci
|
|
|
|
COPY web/ ./
|
|
RUN npm run build
|
|
|
|
|
|
FROM golang:1.26.4-bookworm AS build
|
|
|
|
WORKDIR /src
|
|
|
|
# 与 go.mod 的 go 1.26.4 对齐;local 禁止再去拉 toolchain,避免 proxy.golang.org 中断
|
|
ENV GOTOOLCHAIN=local \
|
|
CGO_ENABLED=0 \
|
|
GOPROXY=https://goproxy.cn,direct
|
|
ARG BUILD_TAGS=fuse
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
COPY --from=web /src/internal/api/web /src/internal/api/web
|
|
|
|
RUN go build -tags "${BUILD_TAGS}" -trimpath -ldflags="-s -w" -o /out/litepan ./cmd/litepan
|
|
|
|
|
|
FROM debian:bookworm-slim AS runtime
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates tzdata fuse3 \
|
|
&& sed -i 's/^#user_allow_other/user_allow_other/' /etc/fuse.conf 2>/dev/null || true \
|
|
&& grep -q '^user_allow_other' /etc/fuse.conf || echo user_allow_other >> /etc/fuse.conf \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
RUN mkdir -p /app/data/log /app/strm /app/mounts
|
|
|
|
COPY --from=build /out/litepan /app/litepan
|
|
|
|
ENV LITEPAN_DATA_DIR=/app/data \
|
|
LITEPAN_STRM_DIR=/app/strm \
|
|
LITEPAN_LISTEN=:5211 \
|
|
LITEPAN_LOG_LEVEL=info \
|
|
TZ=Asia/Shanghai
|
|
|
|
EXPOSE 5211
|
|
|
|
VOLUME ["/app/data", "/app/strm", "/app/mounts"]
|
|
|
|
ENTRYPOINT ["/app/litepan"]
|