Make consistent with master

This commit is contained in:
TheSpad 2023-02-23 11:03:23 +00:00
parent 4b5efe5a9e
commit 03018d7d9a
No known key found for this signature in database
GPG key ID: 08F06191F4587860
5 changed files with 282 additions and 624 deletions

View file

@ -1,226 +1,112 @@
# syntax=docker/dockerfile:1
ARG ALPINE_VER="3.17"
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER} as fetch-stage
############## fetch stage ##############
# package versions
ARG MP3GAIN_VER="1.6.2"
ARG MP3VAL_VER="0.1.8"
# install fetch packages
RUN \
apk add --no-cache \
git
# set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# fetch source code
RUN \
set -ex && \
mkdir -p \
/tmp/beets-src \
/tmp/mp3gain-src \
/tmp/mp3val-src && \
if [ -z ${BEETS_VERSION+x} ] ; then \
BEETS_RAW_COMMIT=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \
| jq -r .sha) && \
BEETS_VERSION="${BEETS_RAW_COMMIT:0:7}"; \
fi && \
curl -o \
/tmp/beets.tar.gz -sL \
"https://github.com/sampsyo/beets/archive/${BEETS_VERSION}.tar.gz" && \
curl -o \
/tmp/mp3gain.zip -sL \
"https://sourceforge.net/projects/mp3gain/files/mp3gain/${MP3GAIN_VER}/mp3gain-${MP3GAIN_VER//./_}-src.zip" && \
curl -o \
/tmp/mp3val.tar.gz -sL \
"https://downloads.sourceforge.net/mp3val/mp3val-${MP3VAL_VER}-src.tar.gz" && \
tar xf \
/tmp/beets.tar.gz -C \
/tmp/beets-src --strip-components=1 && \
unzip -q /tmp/mp3gain.zip -d /tmp/mp3gain-src && \
tar xf \
/tmp/mp3val.tar.gz -C \
/tmp/mp3val-src --strip-components=1 && \
git clone https://github.com/Holzhaus/beets-extrafiles.git /tmp/extrafiles-src
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER} as beets_build-stage
############## beets build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/beets-src /tmp/beets-src
COPY --from=fetch-stage /tmp/extrafiles-src /tmp/extrafiles-src
# set workdir for beets install
WORKDIR /tmp/beets-src
# install build packages
RUN \
apk add --no-cache \
py3-setuptools \
python3-dev
# build beets package
RUN \
set -ex && \
python3 setup.py build && \
python3 setup.py install --prefix=/usr --root=/build/beets
# set workdir for extrafiles install
WORKDIR /tmp/extrafiles-src
# build extrafiles package
RUN \
set -ex && \
python3 setup.py install --prefix=/usr --root=/build/beets
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER} as mp3gain_build-stage
############## mp3gain build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/mp3gain-src /tmp/mp3gain-src
# set workdir
WORKDIR /tmp/mp3gain-src
# install build packages
RUN \
apk add --no-cache \
build-base \
mpg123-dev
# build package
RUN \
set -ex && \
mkdir -p \
/build/mp3gain/usr/bin && \
sed -i "s#/usr/local/bin#/build/mp3gain/usr/bin#g" Makefile && \
make && \
make install
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER} as mp3val_build-stage
############## mp3val build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/mp3val-src /tmp/mp3val-src
# set workdir
WORKDIR /tmp/mp3val-src
# install build packages
RUN \
apk add --no-cache \
build-base
# build package
RUN \
set -ex && \
mkdir -p \
/build/mp3val/usr/bin && \
make -f Makefile.linux && \
cp -p mp3val /build/mp3val/usr/bin
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER} as pip-stage
############## pip packages install stage ##############
# install build packages
RUN \
apk add --no-cache \
build-base \
cargo \
python3-dev
# install pip packages
RUN \
set -ex && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
wheel && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
beetcamp \
confuse \
discogs-client \
enum34 \
mediafile \
mutagen \
pyacoustid \
pyyaml \
unidecode
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER} as strip-stage
############## strip packages stage ##############
# copy artifacts build stages
COPY --from=beets_build-stage /build/beets/usr/ /build/all//usr/
COPY --from=mp3gain_build-stage /build/mp3gain/usr/ /build/all//usr/
COPY --from=mp3val_build-stage /build/mp3val/usr/ /build/all//usr/
COPY --from=pip-stage /usr/lib/python3.10/site-packages /build/all/usr/lib/python3.10/site-packages
# install strip packages
RUN \
apk add --no-cache \
bash \
binutils
# set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# remove unneeded files
RUN \
set -ex && \
for cleanfiles in *.la *.pyc *.pyo; \
do \
find /build/all/ -iname "${cleanfiles}" -exec rm -vf '{}' + \
; done
FROM ghcr.io/linuxserver/baseimage-alpine:${ALPINE_VER}
############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:3.17
# set version label
ARG BUILD_DATE
ARG VERSION
ARG BEETS_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="sparklyballs"
LABEL maintainer="aptalca"
# copy artifacts strip stage
COPY --from=strip-stage /build/all/usr/ /usr/
# install runtime packages
RUN \
apk add --no-cache \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies --upgrade \
build-base \
cairo-dev \
cargo \
cmake \
ffmpeg-dev \
fftw-dev \
git \
gobject-introspection-dev \
jpeg-dev \
libpng-dev \
mpg123-dev \
openjpeg-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
chromaprint \
expat \
ffmpeg \
fftw \
flac \
gdbm \
gst-plugins-good \
gstreamer \
jpeg \
lame \
libffi \
libpng \
mpg123 \
nano \
lame \
py3-beautifulsoup4 \
py3-flask \
py3-gobject3 \
py3-jellyfish \
py3-munkres \
py3-musicbrainzngs \
py3-pillow \
py3-pylast \
py3-requests \
py3-setuptools \
py3-six \
openjpeg \
python3 \
sqlite-libs
sqlite-libs && \
echo "**** install beets ****" && \
mkdir -p /tmp/beets && \
if [ -z ${BEETS_VERSION+x} ] ; then \
BEETS_VERSION=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \
| jq -r .sha); \
fi && \
curl -o \
/tmp/beets.tar.gz -sL \
"https://github.com/beetbox/beets/archive/${BEETS_VERSION}.tar.gz" && \
tar xf \
/tmp/beets.tar.gz -C \
/tmp/beets --strip-components=1 && \
echo "**** compile mp3gain ****" && \
mkdir -p \
/tmp/mp3gain-src && \
curl -o \
/tmp/mp3gain-src/mp3gain.zip -sL \
https://sourceforge.net/projects/mp3gain/files/mp3gain/1.6.2/mp3gain-1_6_2-src.zip && \
cd /tmp/mp3gain-src && \
unzip -qq /tmp/mp3gain-src/mp3gain.zip && \
sed -i "s#/usr/local/bin#/usr/bin#g" /tmp/mp3gain-src/Makefile && \
make && \
make install && \
echo "**** compile mp3val ****" && \
mkdir -p \
/tmp/mp3val-src && \
curl -o \
/tmp/mp3val-src/mp3val.tar.gz -sL \
https://downloads.sourceforge.net/mp3val/mp3val-0.1.8-src.tar.gz && \
cd /tmp/mp3val-src && \
tar xzf /tmp/mp3val-src/mp3val.tar.gz --strip 1 && \
make -f Makefile.linux && \
cp -p mp3val /usr/bin && \
echo "**** install pip ****" && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
setuptools \
wheel && \
echo "**** install beets ****" && \
cd /tmp/beets && \
python3 setup.py build && \
python3 setup.py install --prefix=/usr --root=/ && \
echo "**** install pip packages ****" && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
beautifulsoup4 \
beets-extrafiles \
beetcamp \
discogs-client \
flask \
PyGObject \
pillow \
pyacoustid \
pylast \
requests \
unidecode && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/* \
$HOME/.cache \
$HOME/.cargo
# environment settings
ENV BEETSDIR="/config" \

View file

@ -1,226 +1,112 @@
# syntax=docker/dockerfile:1
ARG ALPINE_VER="3.17"
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER} as fetch-stage
############## fetch stage ##############
# package versions
ARG MP3GAIN_VER="1.6.2"
ARG MP3VAL_VER="0.1.8"
# install fetch packages
RUN \
apk add --no-cache \
git
# set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# fetch source code
RUN \
set -ex && \
mkdir -p \
/tmp/beets-src \
/tmp/mp3gain-src \
/tmp/mp3val-src && \
if [ -z ${BEETS_VERSION+x} ] ; then \
BEETS_RAW_COMMIT=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \
| jq -r .sha) && \
BEETS_VERSION="${BEETS_RAW_COMMIT:0:7}"; \
fi && \
curl -o \
/tmp/beets.tar.gz -sL \
"https://github.com/sampsyo/beets/archive/${BEETS_VERSION}.tar.gz" && \
curl -o \
/tmp/mp3gain.zip -sL \
"https://sourceforge.net/projects/mp3gain/files/mp3gain/${MP3GAIN_VER}/mp3gain-${MP3GAIN_VER//./_}-src.zip" && \
curl -o \
/tmp/mp3val.tar.gz -sL \
"https://downloads.sourceforge.net/mp3val/mp3val-${MP3VAL_VER}-src.tar.gz" && \
tar xf \
/tmp/beets.tar.gz -C \
/tmp/beets-src --strip-components=1 && \
unzip -q /tmp/mp3gain.zip -d /tmp/mp3gain-src && \
tar xf \
/tmp/mp3val.tar.gz -C \
/tmp/mp3val-src --strip-components=1 && \
git clone https://github.com/Holzhaus/beets-extrafiles.git /tmp/extrafiles-src
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER} as beets_build-stage
############## beets build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/beets-src /tmp/beets-src
COPY --from=fetch-stage /tmp/extrafiles-src /tmp/extrafiles-src
# set workdir for beets install
WORKDIR /tmp/beets-src
# install build packages
RUN \
apk add --no-cache \
py3-setuptools \
python3-dev
# build beets package
RUN \
set -ex && \
python3 setup.py build && \
python3 setup.py install --prefix=/usr --root=/build/beets
# set workdir for extrafiles install
WORKDIR /tmp/extrafiles-src
# build extrafiles package
RUN \
set -ex && \
python3 setup.py install --prefix=/usr --root=/build/beets
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER} as mp3gain_build-stage
############## mp3gain build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/mp3gain-src /tmp/mp3gain-src
# set workdir
WORKDIR /tmp/mp3gain-src
# install build packages
RUN \
apk add --no-cache \
build-base \
mpg123-dev
# build package
RUN \
set -ex && \
mkdir -p \
/build/mp3gain/usr/bin && \
sed -i "s#/usr/local/bin#/build/mp3gain/usr/bin#g" Makefile && \
make && \
make install
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER} as mp3val_build-stage
############## mp3val build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/mp3val-src /tmp/mp3val-src
# set workdir
WORKDIR /tmp/mp3val-src
# install build packages
RUN \
apk add --no-cache \
build-base
# build package
RUN \
set -ex && \
mkdir -p \
/build/mp3val/usr/bin && \
make -f Makefile.linux && \
cp -p mp3val /build/mp3val/usr/bin
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER} as pip-stage
############## pip packages install stage ##############
# install build packages
RUN \
apk add --no-cache \
build-base \
cargo \
python3-dev
# install pip packages
RUN \
set -ex && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
wheel && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
beetcamp \
confuse \
discogs-client \
enum34 \
mediafile \
mutagen \
pyacoustid \
pyyaml \
unidecode
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER} as strip-stage
############## strip packages stage ##############
# copy artifacts build stages
COPY --from=beets_build-stage /build/beets/usr/ /build/all//usr/
COPY --from=mp3gain_build-stage /build/mp3gain/usr/ /build/all//usr/
COPY --from=mp3val_build-stage /build/mp3val/usr/ /build/all//usr/
COPY --from=pip-stage /usr/lib/python3.10/site-packages /build/all/usr/lib/python3.10/site-packages
# install strip packages
RUN \
apk add --no-cache \
bash \
binutils
# set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# remove unneeded files
RUN \
set -ex && \
for cleanfiles in *.la *.pyc *.pyo; \
do \
find /build/all/ -iname "${cleanfiles}" -exec rm -vf '{}' + \
; done
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-${ALPINE_VER}
############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17
# set version label
ARG BUILD_DATE
ARG VERSION
ARG BEETS_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="sparklyballs"
LABEL maintainer="aptalca"
# copy artifacts strip stage
COPY --from=strip-stage /build/all/usr/ /usr/
# install runtime packages
RUN \
apk add --no-cache \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies --upgrade \
build-base \
cairo-dev \
cargo \
cmake \
ffmpeg-dev \
fftw-dev \
git \
gobject-introspection-dev \
jpeg-dev \
libpng-dev \
mpg123-dev \
openjpeg-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
chromaprint \
expat \
ffmpeg \
fftw \
flac \
gdbm \
gst-plugins-good \
gstreamer \
jpeg \
lame \
libffi \
libpng \
mpg123 \
nano \
lame \
nano \
py3-beautifulsoup4 \
py3-flask \
py3-gobject3 \
py3-jellyfish \
py3-munkres \
py3-musicbrainzngs \
py3-pillow \
py3-pylast \
py3-requests \
py3-setuptools \
py3-six \
openjpeg \
python3 \
sqlite-libs
sqlite-libs && \
echo "**** install beets ****" && \
mkdir -p /tmp/beets && \
if [ -z ${BEETS_VERSION+x} ] ; then \
BEETS_VERSION=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \
| jq -r .sha); \
fi && \
curl -o \
/tmp/beets.tar.gz -sL \
"https://github.com/beetbox/beets/archive/${BEETS_VERSION}.tar.gz" && \
tar xf \
/tmp/beets.tar.gz -C \
/tmp/beets --strip-components=1 && \
echo "**** compile mp3gain ****" && \
mkdir -p \
/tmp/mp3gain-src && \
curl -o \
/tmp/mp3gain-src/mp3gain.zip -sL \
https://sourceforge.net/projects/mp3gain/files/mp3gain/1.6.2/mp3gain-1_6_2-src.zip && \
cd /tmp/mp3gain-src && \
unzip -qq /tmp/mp3gain-src/mp3gain.zip && \
sed -i "s#/usr/local/bin#/usr/bin#g" /tmp/mp3gain-src/Makefile && \
make && \
make install && \
echo "**** compile mp3val ****" && \
mkdir -p \
/tmp/mp3val-src && \
curl -o \
/tmp/mp3val-src/mp3val.tar.gz -sL \
https://downloads.sourceforge.net/mp3val/mp3val-0.1.8-src.tar.gz && \
cd /tmp/mp3val-src && \
tar xzf /tmp/mp3val-src/mp3val.tar.gz --strip 1 && \
make -f Makefile.linux && \
cp -p mp3val /usr/bin && \
echo "**** install pip ****" && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
setuptools \
wheel && \
echo "**** install beets ****" && \
cd /tmp/beets && \
python3 setup.py build && \
python3 setup.py install --prefix=/usr --root=/ && \
echo "**** install pip packages ****" && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
beautifulsoup4 \
beets-extrafiles \
beetcamp \
discogs-client \
flask \
PyGObject \
pillow \
pyacoustid \
pylast \
requests \
unidecode && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/* \
$HOME/.cache \
$HOME/.cargo
# environment settings
ENV BEETSDIR="/config" \

View file

@ -1,226 +1,112 @@
# syntax=docker/dockerfile:1
ARG ALPINE_VER="3.17"
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER} as fetch-stage
############## fetch stage ##############
# package versions
ARG MP3GAIN_VER="1.6.2"
ARG MP3VAL_VER="0.1.8"
# install fetch packages
RUN \
apk add --no-cache \
git
# set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# fetch source code
RUN \
set -ex && \
mkdir -p \
/tmp/beets-src \
/tmp/mp3gain-src \
/tmp/mp3val-src && \
if [ -z ${BEETS_VERSION+x} ] ; then \
BEETS_RAW_COMMIT=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \
| jq -r .sha) && \
BEETS_VERSION="${BEETS_RAW_COMMIT:0:7}"; \
fi && \
curl -o \
/tmp/beets.tar.gz -sL \
"https://github.com/sampsyo/beets/archive/${BEETS_VERSION}.tar.gz" && \
curl -o \
/tmp/mp3gain.zip -sL \
"https://sourceforge.net/projects/mp3gain/files/mp3gain/${MP3GAIN_VER}/mp3gain-${MP3GAIN_VER//./_}-src.zip" && \
curl -o \
/tmp/mp3val.tar.gz -sL \
"https://downloads.sourceforge.net/mp3val/mp3val-${MP3VAL_VER}-src.tar.gz" && \
tar xf \
/tmp/beets.tar.gz -C \
/tmp/beets-src --strip-components=1 && \
unzip -q /tmp/mp3gain.zip -d /tmp/mp3gain-src && \
tar xf \
/tmp/mp3val.tar.gz -C \
/tmp/mp3val-src --strip-components=1 && \
git clone https://github.com/Holzhaus/beets-extrafiles.git /tmp/extrafiles-src
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER} as beets_build-stage
############## beets build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/beets-src /tmp/beets-src
COPY --from=fetch-stage /tmp/extrafiles-src /tmp/extrafiles-src
# set workdir for beets install
WORKDIR /tmp/beets-src
# install build packages
RUN \
apk add --no-cache \
py3-setuptools \
python3-dev
# build beets package
RUN \
set -ex && \
python3 setup.py build && \
python3 setup.py install --prefix=/usr --root=/build/beets
# set workdir for extrafiles install
WORKDIR /tmp/extrafiles-src
# build extrafiles package
RUN \
set -ex && \
python3 setup.py install --prefix=/usr --root=/build/beets
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER} as mp3gain_build-stage
############## mp3gain build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/mp3gain-src /tmp/mp3gain-src
# set workdir
WORKDIR /tmp/mp3gain-src
# install build packages
RUN \
apk add --no-cache \
build-base \
mpg123-dev
# build package
RUN \
set -ex && \
mkdir -p \
/build/mp3gain/usr/bin && \
sed -i "s#/usr/local/bin#/build/mp3gain/usr/bin#g" Makefile && \
make && \
make install
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER} as mp3val_build-stage
############## mp3val build stage ##############
# copy artifacts from fetch stage
COPY --from=fetch-stage /tmp/mp3val-src /tmp/mp3val-src
# set workdir
WORKDIR /tmp/mp3val-src
# install build packages
RUN \
apk add --no-cache \
build-base
# build package
RUN \
set -ex && \
mkdir -p \
/build/mp3val/usr/bin && \
make -f Makefile.linux && \
cp -p mp3val /build/mp3val/usr/bin
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER} as pip-stage
############## pip packages install stage ##############
# install build packages
RUN \
apk add --no-cache \
build-base \
cargo \
python3-dev
# install pip packages
RUN \
set -ex && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
wheel && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
beetcamp \
confuse \
discogs-client \
enum34 \
mediafile \
mutagen \
pyacoustid \
pyyaml \
unidecode
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER} as strip-stage
############## strip packages stage ##############
# copy artifacts build stages
COPY --from=beets_build-stage /build/beets/usr/ /build/all//usr/
COPY --from=mp3gain_build-stage /build/mp3gain/usr/ /build/all//usr/
COPY --from=mp3val_build-stage /build/mp3val/usr/ /build/all//usr/
COPY --from=pip-stage /usr/lib/python3.10/site-packages /build/all/usr/lib/python3.10/site-packages
# install strip packages
RUN \
apk add --no-cache \
bash \
binutils
# set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# remove unneeded files
RUN \
set -ex && \
for cleanfiles in *.la *.pyc *.pyo; \
do \
find /build/all/ -iname "${cleanfiles}" -exec rm -vf '{}' + \
; done
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-${ALPINE_VER}
############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.17
# set version label
ARG BUILD_DATE
ARG VERSION
ARG BEETS_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="sparklyballs"
LABEL maintainer="aptalca"
# copy artifacts strip stage
COPY --from=strip-stage /build/all/usr/ /usr/
# install runtime packages
RUN \
apk add --no-cache \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies --upgrade \
build-base \
cairo-dev \
cargo \
cmake \
ffmpeg-dev \
fftw-dev \
git \
gobject-introspection-dev \
jpeg-dev \
libpng-dev \
mpg123-dev \
openjpeg-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
chromaprint \
expat \
ffmpeg \
fftw \
flac \
gdbm \
gst-plugins-good \
gstreamer \
jpeg \
lame \
libffi \
libpng \
mpg123 \
nano \
lame \
nano \
py3-beautifulsoup4 \
py3-flask \
py3-gobject3 \
py3-jellyfish \
py3-munkres \
py3-musicbrainzngs \
py3-pillow \
py3-pylast \
py3-requests \
py3-setuptools \
py3-six \
openjpeg \
python3 \
sqlite-libs
sqlite-libs && \
echo "**** install beets ****" && \
mkdir -p /tmp/beets && \
if [ -z ${BEETS_VERSION+x} ] ; then \
BEETS_VERSION=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \
| jq -r .sha); \
fi && \
curl -o \
/tmp/beets.tar.gz -sL \
"https://github.com/beetbox/beets/archive/${BEETS_VERSION}.tar.gz" && \
tar xf \
/tmp/beets.tar.gz -C \
/tmp/beets --strip-components=1 && \
echo "**** compile mp3gain ****" && \
mkdir -p \
/tmp/mp3gain-src && \
curl -o \
/tmp/mp3gain-src/mp3gain.zip -sL \
https://sourceforge.net/projects/mp3gain/files/mp3gain/1.6.2/mp3gain-1_6_2-src.zip && \
cd /tmp/mp3gain-src && \
unzip -qq /tmp/mp3gain-src/mp3gain.zip && \
sed -i "s#/usr/local/bin#/usr/bin#g" /tmp/mp3gain-src/Makefile && \
make && \
make install && \
echo "**** compile mp3val ****" && \
mkdir -p \
/tmp/mp3val-src && \
curl -o \
/tmp/mp3val-src/mp3val.tar.gz -sL \
https://downloads.sourceforge.net/mp3val/mp3val-0.1.8-src.tar.gz && \
cd /tmp/mp3val-src && \
tar xzf /tmp/mp3val-src/mp3val.tar.gz --strip 1 && \
make -f Makefile.linux && \
cp -p mp3val /usr/bin && \
echo "**** install pip ****" && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
setuptools \
wheel && \
echo "**** install beets ****" && \
cd /tmp/beets && \
python3 setup.py build && \
python3 setup.py install --prefix=/usr --root=/ && \
echo "**** install pip packages ****" && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
beautifulsoup4 \
beets-extrafiles \
beetcamp \
discogs-client \
flask \
PyGObject \
pillow \
pyacoustid \
pylast \
requests \
unidecode && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/* \
$HOME/.cache \
$HOME/.cargo
# environment settings
ENV BEETSDIR="/config" \

View file

@ -76,9 +76,9 @@ services:
- PGID=1000
- TZ=Etc/UTC
volumes:
- </path/to/appdata/config>:/config
- </path/to/music/library>:/music
- </path/to/ingest>:/downloads
- /path/to/appdata/config:/config
- /path/to/music/library:/music
- /path/to/ingest:/downloads
ports:
- 8337:8337
restart: unless-stopped
@ -93,9 +93,9 @@ docker run -d \
-e PGID=1000 \
-e TZ=Etc/UTC \
-p 8337:8337 \
-v </path/to/appdata/config>:/config \
-v </path/to/music/library>:/music \
-v </path/to/ingest>:/downloads \
-v /path/to/appdata/config:/config \
-v /path/to/music/library:/music \
-v /path/to/ingest:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/beets:nightly
@ -224,7 +224,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **24.12.22:** - Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos.
* **24.12.22:** - Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin.
* **15.01.22:** - Rebase to Alpine 3.15.
* **02.06.21:** - Add back gstreamer packages.
* **24.05.21:** - Add missing changes from master branch.

View file

@ -24,9 +24,9 @@ param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
param_usage_include_vols: true
param_volumes:
- { vol_path: "/config", vol_host_path: "</path/to/appdata/config>", desc: "Configuration files." }
- { vol_path: "/music", vol_host_path: "</path/to/music/library>", desc: "Music library" }
- { vol_path: "/downloads", vol_host_path: "</path/to/ingest>", desc: "Non processed music" }
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Configuration files." }
- { vol_path: "/music", vol_host_path: "/path/to/music/library", desc: "Music library" }
- { vol_path: "/downloads", vol_host_path: "/path/to/ingest", desc: "Non processed music" }
param_usage_include_ports: true
param_ports:
- { external_port: "8337", internal_port: "8337", port_desc: "Application WebUI" }