mirror of
https://github.com/sbondCo/Watcharr.git
synced 2026-06-22 20:00:26 +00:00
47 lines
1.1 KiB
Docker
47 lines
1.1 KiB
Docker
#
|
|
# Backend
|
|
#
|
|
FROM golang:1.25-alpine AS server
|
|
|
|
WORKDIR /server
|
|
|
|
# We can copy the whole server folder, since our .dockerignore file
|
|
# will filter out stuff we don't want in the final image.
|
|
COPY server/ ./
|
|
|
|
# Required so we can build with cgo
|
|
RUN apk update && apk add --no-cache musl-dev gcc build-base
|
|
|
|
# CGO_CFLAGS: https://github.com/mattn/go-sqlite3/issues/1164#issuecomment-1635253695
|
|
RUN go mod download && GOOS=linux CGO_ENABLED=1 CGO_CFLAGS="-D_LARGEFILE64_SOURCE" go build -o ./watcharr
|
|
|
|
#
|
|
# Frontend
|
|
#
|
|
FROM node:20-alpine AS ui
|
|
|
|
WORKDIR /app
|
|
COPY package*.json vite.config.ts svelte.config.js tsconfig.json ./
|
|
COPY ./src ./src
|
|
COPY ./static ./static
|
|
|
|
RUN npm install && npm run build
|
|
|
|
#
|
|
# Production
|
|
#
|
|
FROM node:20-alpine AS runner
|
|
|
|
COPY --from=server /server/watcharr /
|
|
COPY --from=ui /app/build /ui
|
|
COPY --from=ui /app/package.json /app/package-lock.json /ui/
|
|
|
|
# Install just the prod dependencies for final step.
|
|
# We --ignore-scripts, to stop the `prepare` script from auto-
|
|
# running, which is only meant for development (will error).
|
|
RUN cd /ui && npm ci --omit=dev --ignore-scripts=true
|
|
|
|
EXPOSE 3080
|
|
|
|
CMD ["/watcharr"]
|