2022-12-19 20:51:51 -08:00
|
|
|
### STAGE 0: Get deps ###
|
|
|
|
|
FROM --platform=${TARGETPLATFORM} node:16-alpine AS deps
|
|
|
|
|
|
2021-08-17 17:01:11 -05:00
|
|
|
WORKDIR /client
|
2022-12-19 20:51:51 -08:00
|
|
|
|
|
|
|
|
COPY /client/package* ./
|
|
|
|
|
|
|
|
|
|
RUN npm ci
|
|
|
|
|
|
|
|
|
|
### STAGE 1: Build client ###
|
|
|
|
|
FROM --platform=${TARGETPLATFORM} node:16-alpine AS build
|
|
|
|
|
|
|
|
|
|
WORKDIR /client
|
|
|
|
|
|
2021-08-17 17:01:11 -05:00
|
|
|
COPY /client /client
|
2022-12-19 20:51:51 -08:00
|
|
|
|
|
|
|
|
COPY --from=deps /client/node_modules /client/node_modules
|
|
|
|
|
|
2021-08-17 17:01:11 -05:00
|
|
|
RUN npm run generate
|
|
|
|
|
|
2022-12-19 20:51:51 -08:00
|
|
|
### STAGE 2: Build server ###
|
|
|
|
|
FROM --platform=${TARGETPLATFORM} ghcr.io/linuxserver/baseimage-alpine:3.15 AS runner
|
2022-09-11 15:35:06 -05:00
|
|
|
|
2022-12-19 20:51:51 -08:00
|
|
|
ENV NODE_ENV=production \
|
|
|
|
|
TZ="Etc/UTC"
|
2022-06-02 05:55:01 +00:00
|
|
|
|
2022-12-19 20:51:51 -08:00
|
|
|
COPY --from=sandreas/tone:v0.1.2 /usr/local/bin/tone /usr/local/bin/
|
|
|
|
|
COPY --from=build /client/dist /app/audiobookshelf/client/dist
|
2022-06-02 05:55:01 +00:00
|
|
|
|
2022-12-19 20:51:51 -08:00
|
|
|
COPY index.js package* readme.md LICENSE Dockerfile /app/audiobookshelf/
|
|
|
|
|
COPY server /app/audiobookshelf/server
|
|
|
|
|
|
|
|
|
|
RUN \
|
|
|
|
|
apk add --upgrade --no-cache \
|
|
|
|
|
ffmpeg \
|
|
|
|
|
nodejs \
|
|
|
|
|
npm && \
|
|
|
|
|
cd app/audiobookshelf && \
|
|
|
|
|
npm ci --omit-dev
|
2022-06-02 05:55:01 +00:00
|
|
|
|
|
|
|
|
HEALTHCHECK \
|
|
|
|
|
--interval=30s \
|
|
|
|
|
--timeout=3s \
|
|
|
|
|
--start-period=10s \
|
2022-07-24 15:46:19 -05:00
|
|
|
CMD curl -f http://127.0.0.1/healthcheck || exit 1
|
2022-12-19 20:51:51 -08:00
|
|
|
|
|
|
|
|
# copy local files
|
|
|
|
|
COPY root/ /
|
|
|
|
|
|
|
|
|
|
# ports and volumes
|
|
|
|
|
EXPOSE 80
|
|
|
|
|
VOLUME /config /metadata
|