update docker image

This commit is contained in:
Jasper 2022-12-19 20:51:51 -08:00
parent 3e15e09c07
commit c56a3b8fdf
3 changed files with 99 additions and 19 deletions

View file

@ -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

View 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

View 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}"