mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-26 19:21:39 +00:00
update docker image
This commit is contained in:
parent
3e15e09c07
commit
c56a3b8fdf
3 changed files with 99 additions and 19 deletions
58
Dockerfile
58
Dockerfile
|
|
@ -1,32 +1,52 @@
|
||||||
### STAGE 0: Build client ###
|
### STAGE 0: Get deps ###
|
||||||
FROM node:16-alpine AS build
|
FROM --platform=${TARGETPLATFORM} node:16-alpine AS deps
|
||||||
|
|
||||||
WORKDIR /client
|
WORKDIR /client
|
||||||
|
|
||||||
|
COPY /client/package* ./
|
||||||
|
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
### STAGE 1: Build client ###
|
||||||
|
FROM --platform=${TARGETPLATFORM} node:16-alpine AS build
|
||||||
|
|
||||||
|
WORKDIR /client
|
||||||
|
|
||||||
COPY /client /client
|
COPY /client /client
|
||||||
RUN npm ci && npm cache clean --force
|
|
||||||
|
COPY --from=deps /client/node_modules /client/node_modules
|
||||||
|
|
||||||
RUN npm run generate
|
RUN npm run generate
|
||||||
|
|
||||||
### STAGE 1: Build server ###
|
### STAGE 2: Build server ###
|
||||||
FROM sandreas/tone:v0.1.2 AS tone
|
FROM --platform=${TARGETPLATFORM} ghcr.io/linuxserver/baseimage-alpine:3.15 AS runner
|
||||||
FROM node:16-alpine
|
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production \
|
||||||
RUN apk update && \
|
TZ="Etc/UTC"
|
||||||
apk add --no-cache --update \
|
|
||||||
curl \
|
|
||||||
tzdata \
|
|
||||||
ffmpeg
|
|
||||||
|
|
||||||
COPY --from=tone /usr/local/bin/tone /usr/local/bin/
|
COPY --from=sandreas/tone:v0.1.2 /usr/local/bin/tone /usr/local/bin/
|
||||||
COPY --from=build /client/dist /client/dist
|
COPY --from=build /client/dist /app/audiobookshelf/client/dist
|
||||||
COPY index.js package* /
|
|
||||||
COPY server server
|
|
||||||
|
|
||||||
RUN npm ci --only=production
|
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
|
||||||
|
|
||||||
EXPOSE 80
|
|
||||||
HEALTHCHECK \
|
HEALTHCHECK \
|
||||||
--interval=30s \
|
--interval=30s \
|
||||||
--timeout=3s \
|
--timeout=3s \
|
||||||
--start-period=10s \
|
--start-period=10s \
|
||||||
CMD curl -f http://127.0.0.1/healthcheck || exit 1
|
CMD curl -f http://127.0.0.1/healthcheck || exit 1
|
||||||
CMD ["npm", "start"]
|
|
||||||
|
# copy local files
|
||||||
|
COPY root/ /
|
||||||
|
|
||||||
|
# ports and volumes
|
||||||
|
EXPOSE 80
|
||||||
|
VOLUME /config /metadata
|
||||||
|
|
|
||||||
13
root/etc/cont-init.d/30-config
Normal file
13
root/etc/cont-init.d/30-config
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
# make config & metadata folder
|
||||||
|
mkdir -p \
|
||||||
|
/config/ \
|
||||||
|
/metadata/
|
||||||
|
|
||||||
|
# chown config & metadata directories if currently not set to abc
|
||||||
|
if [[ -d /config ]] && [[ "$(stat -c '%U' /config)" != "abc" ]]; then
|
||||||
|
chown -R abc:abc /config/
|
||||||
|
elif [[ -d /metadata ]] && [[ "$(stat -c '%U' /metadata)" != "abc" ]]; then
|
||||||
|
chown -R abc:abc /metadata/
|
||||||
|
fi
|
||||||
47
root/etc/services.d/audiobookshelf/run
Normal file
47
root/etc/services.d/audiobookshelf/run
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
|
||||||
|
## Changing ownership recursively on /config still threw ownership errors for some reason
|
||||||
|
files=(
|
||||||
|
"/config/"
|
||||||
|
"/audiobooks/"
|
||||||
|
"/podcasts/"
|
||||||
|
"/metadata/"
|
||||||
|
"/config/users/njodb.properties"
|
||||||
|
"/config/libraryItems/njodb.properties"
|
||||||
|
"/config/sessions/njodb.properties"
|
||||||
|
"/config/libraries/njodb.properties"
|
||||||
|
"/config/settings/njodb.properties"
|
||||||
|
"/config/collections/njodb.properties"
|
||||||
|
"/config/playlists/njodb.properties"
|
||||||
|
"/config/authors/njodb.properties"
|
||||||
|
"/config/series/njodb.properties"
|
||||||
|
"/config/feeds/njodb.properties"
|
||||||
|
"/config/libraryItems"
|
||||||
|
"/config/settings/data"
|
||||||
|
"/config/users/data"
|
||||||
|
"/config/authors/data"
|
||||||
|
"/config/libraries/data"
|
||||||
|
"/config/settings/tmp"
|
||||||
|
"/config/users/tmp"
|
||||||
|
"/config/authors/tmp"
|
||||||
|
"/config/libraries/tmp"
|
||||||
|
"/config/settings/cache"
|
||||||
|
"/config/users/cache"
|
||||||
|
"/config/authors/cache"
|
||||||
|
"/config/libraries/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
if [[ -f "$file" ]] && [[ "$(stat -c '%U' "$file")" != "abc" ]]; then
|
||||||
|
chown abc:abc "$file"
|
||||||
|
elif [[ -d "$file" ]] && [[ "$(stat -c '%U' "$file")" != "abc" ]]; then
|
||||||
|
chown -R abc:abc "$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
PORT=${PORT:-80}
|
||||||
|
|
||||||
|
exec \
|
||||||
|
s6-setuidgid abc npm --prefix /app/audiobookshelf/ --cache /app/audiobookshelf/ run start --port "${PORT}"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue