1
0
mirror of synced 2025-12-15 20:12:17 +01:00
Files
hassio-addons/mediaelch/Dockerfile
2023-02-08 23:27:46 +01:00

158 lines
4.9 KiB
Docker

ARG BUILD_FROM
ARG BUILD_ARCH
#
# baseimage-gui Dockerfile
#
# https://github.com/jlesage/docker-baseimage-gui
#
# Get Dockerfile cross-compilation helpers.
FROM --platform=$BUILD_ARCH tonistiigi/xx AS xx
# Build Nginx.
FROM --platform=$BUILD_ARCH ${BUILD_FROM} AS nginx
ARG TARGETPLATFORM
COPY --from=xx / /
COPY src/nginx/build.sh /tmp/build-nginx.sh
RUN chmod -R 755 /tmp/build-nginx.sh
RUN /tmp/build-nginx.sh
RUN xx-verify --static /tmp/nginx-install/sbin/nginx
# NOTE: Extended attributes are kept by buildx when using the COPY command.
# See https://wildwolf.name/multi-stage-docker-builds-and-xattrs/.
RUN apk --no-cache add libcap && setcap cap_net_bind_service=ep /tmp/nginx-install/sbin/nginx
# Build noVNC.
FROM --platform=$BUILD_ARCH ${BUILD_FROM} AS noVNC
ARG NOVNC_VERSION=1.3.0
ARG BOOTSTRAP_VERSION=5.1.3
ARG BOOTSTRAP_NIGHTSHADE_VERSION=1.1.3
ARG FONTAWESOME_VERSION=4.7.0
ARG NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.tar.gz
ARG BOOTSTRAP_URL=https://github.com/twbs/bootstrap/releases/download/v${BOOTSTRAP_VERSION}/bootstrap-${BOOTSTRAP_VERSION}-dist.zip
ARG BOOTSTRAP_NIGHTSHADE_URL=https://github.com/vinorodrigues/bootstrap-dark-5/archive/refs/tags/v${BOOTSTRAP_NIGHTSHADE_VERSION}.tar.gz
ARG FONTAWESOME_URL=https://fontawesome.com/v${FONTAWESOME_VERSION}/assets/font-awesome-${FONTAWESOME_VERSION}.zip
WORKDIR /tmp
COPY rootfs/opt/noVNC/index.html /opt/noVNC/index.html
RUN \
# Install required tools.
apk --no-cache add \
curl \
sed \
jq \
npm \
&& \
npm install clean-css-cli -g
RUN \
# Create required directories.
mkdir -p \
/opt/noVNC/app/styles \
/opt/noVNC/app/fonts
RUN \
# Install noVNC.
mkdir /tmp/noVNC && \
curl -# -L ${NOVNC_URL} | tar -xz --strip 1 -C /tmp/noVNC && \
cp -vr /tmp/noVNC/core /opt/noVNC/ && \
cp -vr /tmp/noVNC/vendor /opt/noVNC/
RUN \
# Install Bootstrap.
# NOTE: Only copy the JS bundle, since the CSS is taken from Bootstrap
# Nightshade.
curl -sS -L -O ${BOOTSTRAP_URL} && \
unzip bootstrap-${BOOTSTRAP_VERSION}-dist.zip && \
#cp -v bootstrap-${BOOTSTRAP_VERSION}-dist/css/bootstrap.min.css /opt/noVNC/app/styles/ && \
cp -v bootstrap-${BOOTSTRAP_VERSION}-dist/js/bootstrap.bundle.min.js* /opt/noVNC/app/
RUN \
# Install Bootstrap Nightshade.
mkdir /tmp/bootstrap-nightshade && \
curl -# -L ${BOOTSTRAP_NIGHTSHADE_URL} | tar -xz --strip 1 -C /tmp/bootstrap-nightshade && \
cleancss \
-O1 \
--format breakWith=lf \
--output /opt/noVNC/app/styles/bootstrap-nightshade.min.css \
/tmp/bootstrap-nightshade/dist/css/bootstrap-nightshade.css
RUN \
# Install Font Awesome.
curl -sS -L -O ${FONTAWESOME_URL} && \
unzip font-awesome-${FONTAWESOME_VERSION}.zip && \
cp -v font-awesome-${FONTAWESOME_VERSION}/fonts/fontawesome-webfont.* /opt/noVNC/app/fonts/ && \
cp -v font-awesome-${FONTAWESOME_VERSION}/css/font-awesome.min.css /opt/noVNC/app/styles/
RUN \
# Set version of CSS and JavaScript file URLs.
sed "s/UNIQUE_VERSION/$(date | md5sum | cut -c1-10)/g" -i /opt/noVNC/index.html
# Pull base image.
FROM ${BUILD_FROM} AS MediaElchBuild
WORKDIR /tmp
# Define software versions.
ARG REPO_TAG=v2.10.0
# Define software download URLs.
ARG REPO_URL=https://github.com/Komet/MediaElch
RUN \
apk add --update \
git \
build-base \
qtchooser \
qt5-qtbase-dev \
qt5-qtquickcontrols2-dev \
qt5-qtsvg-dev \
qt5-qtmultimedia-dev \
qt5-qttools-dev \
qt5-qtdeclarative-dev \
libmediainfo-dev
# Download MediaElch
RUN \
REPO_DIR=/tmp/$(basename $REPO_URL .git) && \
cd /tmp && \
git clone --single-branch $REPO_URL && \
git --work-tree=$REPO_DIR --git-dir=$REPO_DIR/.git checkout tags/$REPO_TAG
RUN \
cd /tmp/MediaElch && \
git submodule update --init && \
mkdir build && cd build && \
qmake .. CONFIG+=release && \
make install -j$(nproc)
# Pull base image.
FROM ${BUILD_FROM}
#zenity
ARG VNC_PKGS="ttf-dejavu tigervnc openbox"
ARG RUNTIME_PKG="qtchooser qt5-qtbase qt5-qtquickcontrols2 qt5-qtsvg qt5-qtmultimedia qt5-qttools qt5-qtbase-sqlite libmediainfo"
# Add files.
COPY rootfs/ /
COPY --from=nginx /tmp/nginx-install /opt/base/
COPY --from=noVNC /opt/noVNC /opt/noVNC
COPY --from=MediaElchBuild /usr/bin/MediaElch /app/
COPY --from=MediaElchBuild /usr/share/pixmaps/MediaElch.png /opt/noVNC/app/images/icons/master_icon.png
# Install dependencies.
RUN \
apk add --update \
${VNC_PKGS} \
${RUNTIME_PKG}
# Add files.
COPY rootfs/ /
# Set environment variables.
ENV APP_NAME="MediaElch" \
S6_KILL_GRACETIME=8000 \
USER_ID=0 \
GROUP_ID=0
# Corrects permissions for s6 v3
RUN if [ -d /etc/cont-init.d ]; then chmod -R 755 /etc/cont-init.d; fi && \
if [ -d /etc/services.d ]; then chmod -R 755 /etc/services.d; fi
WORKDIR /data
# Metadata.
LABEL \
org.label-schema.name="MediaElch" \
org.label-schema.description="Docker container for MediaElch"