[add] docker build

This commit is contained in:
Evan Reichard 2023-12-21 17:44:50 -05:00
parent 43b04dea1d
commit f624676d85
6 changed files with 109 additions and 0 deletions

32
Dockerfile Normal file
View File

@ -0,0 +1,32 @@
FROM --platform=$TARGETPLATFORM docker.io/library/node:16-alpine as deemix
ARG TARGETPLATFORM
ARG BUILDPLATFORM
RUN echo "Building for TARGETPLATFORM=$TARGETPLATFORM | BUILDPLATFORM=$BUILDPLATFORM"
RUN apk add --no-cache git jq python3 make gcc musl-dev g++ && \
rm -rf /var/lib/apt/lists/*
COPY . /app
WORKDIR app
RUN case "$TARGETPLATFORM" in \
"linux/amd64") \
jq '.pkg.targets = ["node16-alpine-x64"]' ./server/package.json > tmp-json ;; \
"linux/arm64") \
jq '.pkg.targets = ["node16-alpine-arm64"]' ./server/package.json > tmp-json ;; \
"linux/arm64/v8") \
jq '.pkg.targets = ["node16-alpine-arm64"]' ./server/package.json > tmp-json ;; \
*) \
echo "Platform $TARGETPLATFORM not supported" && exit 1 ;; \
esac && \
mv tmp-json /app/server/package.json
RUN yarn install-all
RUN yarn dist-server
RUN mv /app/dist/deemix-server /deemix-server
FROM lsiobase/alpine:3.19
COPY --from=deemix /deemix-server /deemix-server
COPY docker-root/ /
EXPOSE 6595
ENTRYPOINT [ "/init" ]

8
Makefile Normal file
View File

@ -0,0 +1,8 @@
docker_build_local:
docker build -t deemixer:latest .
docker_build_release_latest:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t gitea.va.reichard.io/evan/deemixer:latest \
--push .

View File

@ -4,6 +4,10 @@ This is forked from [deemix-webui](https://gitlab.com/RemixDev/deemix-webui) and
The submodule reference was removed and consolidated into this single repo. Git history was maintained.
## Building Docker Image
make docker_build_local
## Running from source
You need to use nodejs 16.x, using `yarn` is recommended.

View File

@ -0,0 +1,30 @@
#!/usr/bin/with-contenv bash
# test write access to download and config folder and test internet connectivity
printf '[cont-init.d] Fixing Folder Permissions - Config Folder\n'
chown -R abc:abc /config
printf '[cont-init.d] Fixing Folder Permissions - Temp Folder\n'
mkdir /tmp/deemix-imgs/
chown -R abc:abc /tmp/deemix-imgs/
# find all folders in the download folder and own them to the container user. This will not change files but should run quicker on big collections.
if [ ! -z ${DISABLE_OWNERSHIP_CHECK} ]; then
printf '[cont-init.d] Download Folder Ownership Check disabled by Environment Variable\n'
else
printf '[cont-init.d] Fixing Folder Permissions - Downloads Folder\n'
find /downloads -type d -exec chown abc:abc {} +
fi
# add executability to server
chmod +x /deemix-server
# Fix misconfigured download locations. The container's download map is always /downloads.
if [ -f "/config/config.json" ]; then
jq '.downloadLocation = "/downloads"' /config/config.json > tmp.$$.json && mv tmp.$$.json /config/config.json
chown abc:abc /config/config.json
fi

View File

@ -0,0 +1,9 @@
#!/usr/bin/with-contenv bash
# test write access to download and config folder and test internet connectivity
printf '[cont-init.d] Testing Access\n' && \
printf '%-50s %2s %-5s \n' "[cont-init.d] Container Builddate" ":" "$BUILDDATEENV" && \
if [ -w "/downloads" ]; then printf '%-50s %2s %-5s \n' "[cont-init.d] Download Folder Write Access" ":" "Success"; else printf '%-50s %2s %-5s \n' "[cont-init.d] Download Folder Write Access" ":" "Failure"; fi && \
if [ -w "/config" ]; then printf '%-50s %2s %-5s \n' "[cont-init.d] Config Folder Write Access" ":" "Success"; else printf '%-50s %2s %-5s \n' "[cont-init.d] Config Folder Write Access" ":" "Failure"; fi && \
until curl --fail -sf www.deezer.com; do printf '%-50s %2s %-5s \n' "[cont-init.d] Internet Access" ":" "Failure. Trying again in 5 seconds"; sleep 5; done
printf '%-50s %2s %-5s \n' "[cont-init.d] Internet Access" ":" "Success"

View File

@ -0,0 +1,26 @@
#!/usr/bin/with-contenv bash
UMASK_SET=${UMASK_SET:-022}
umask "$UMASK_SET"
cd /
# Check if an alternative port was defined, set it to it or default
if [ ! -z ${INTPORT} ]; then
port=$INTPORT
else
port=6595
fi
# Check if the ARL environment var is set to anything. This enables legacy behavior
if [ ! -z ${ARL} ]; then
export DEEMIX_SINGLE_USER=true
fi
export DEEMIX_DATA_DIR=/config/
export DEEMIX_MUSIC_DIR=/downloads/
export DEEMIX_SERVER_PORT=$port
export DEEMIX_HOST=0.0.0.0
echo "[services.d] Starting Deemixer"
s6-setuidgid abc /deemix-server