FROM docker.io/debian:trixie-slim AS build # set version label ARG BUILD_DATE ARG VERSION ARG CALIBREWEB_RELEASE ARG CALIBRE_INSTALLER_SOURCE_CODE_URL=https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py ARG NETIFACES_PLUS_RELEASE ARG KEPUBIFY_RELEASE LABEL build_version="petite-maison-orange.fr version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="Eric Coissac " RUN cp /etc/apt/sources.list.d/debian.sources \ /etc/apt/sources.list.d/debian.sources.save \ && sed -e "s/contrib main/contrib main non-free-firmware/g" \ /etc/apt/sources.list.d/debian.sources.save > /etc/apt/sources.list.d/debian.sources RUN \ echo "**** install build packages ****" 1>&2 \ && apt update \ && apt install -y build-essential \ && apt install -y tzdata \ && apt install -y libghc-zeromq4-haskell-dev \ && apt install -y libldap-dev \ && apt install -y libsasl2-dev \ && apt install -y imagemagick \ && apt install -y git \ && apt install -y jq \ && apt install -y curl \ && apt install -y wget \ && apt install -y xz-utils \ && apt install -y bash \ && apt install -y python3-pip \ && apt install -y python3-venv \ && apt install -y python3-dev \ && apt install -y python3-setuptools RUN echo "**** create tmp dir ****" 1>&2 \ && mkdir -p /tmp RUN \ echo "**** install Unrar from source" 1>&2 \ && cd /tmp \ && curl https://www.rarlab.com/rar/unrarsrc-7.0.9.tar.gz \ | tar zxvf - \ && cd unrar \ && sed 's/^DEFINES=/DEFINES=-DUSE_FALLOCATE /' \ makefile > Makefile \ && make -f Makefile \ && make -f Makefile install RUN echo "**** install python3 ****" 1>&2 ENV PYTHONUNBUFFERED=1 RUN python3 -m venv /app \ && . /app/bin/activate \ && pip3 install --no-cache cryptography \ && pip3 install --no-cache ldap3 \ && pip3 install --no-cache flask-ldap3-login \ && pip3 install --no-cache --upgrade pip setuptools \ && pip3 install --no-cache --upgrade cython \ && pip3 install --no-cache --upgrade tzdata \ && pip3 install --no-cache --upgrade netifaces-plus COPY patches /tmp/patches RUN echo "**** install calibre ****" 1>&2 \ # install calibre binary ENV LD_LIBRARY_PATH /usr/lib:/opt/calibre/lib ENV PATH $PATH:/opt/calibre/bin ENV LC_ALL C ENV CALIBRE_INSTALLER https://download.calibre-ebook.com/linux-installer.sh RUN apt install -y libopengl0 \ && apt install -y libegl1 \ && apt install -y libxcb-cursor0 \ && curl -L ${CALIBRE_INSTALLER} \ | sh /dev/stdin RUN echo "**** download calibre-web ****" 1>&2 \ && if [ -z ${CALIBREWEB_RELEASE} ]; then \ CALIBREWEB_RELEASE=$(curl -sX GET "https://api.github.com/repos/janeczku/calibre-web/releases/latest" \ | awk '/tag_name/{print $4;exit}' FS='[""]'); \ fi \ && echo " ---> install version ${CALIBREWEB_RELEASE}" 1>&2 \ && git clone --depth 1 --branch ${CALIBREWEB_RELEASE} https://github.com/janeczku/calibre-web.git /tmp/calibreweb \ && cd /tmp/calibreweb \ && mkdir -p src \ && ln -s /tmp/calibreweb /tmp/calibreweb/src/calibreweb RUN echo "**** apply calibre-web patches ****" 1>&2 \ && cd /tmp/calibreweb/src/calibreweb \ && for p in /tmp/patches/calibre-web/* ; do \ patch -p0 < ${p} ; \ done RUN echo "**** build & install calibre-web ****" 1>&2 \ && . /app/bin/activate \ && cd /tmp/calibreweb/src/calibreweb \ && pip3 install -U --no-cache-dir \ -r requirements.txt \ -r optional-requirements.txt \ && cd .. \ && pip3 install /tmp/calibreweb RUN echo "***install kepubify" 1>&2 && \ if [ -z ${KEPUBIFY_RELEASE} ]; then \ KEPUBIFY_RELEASE=$(curl -sX GET "https://api.github.com/repos/pgaskin/kepubify/releases/latest" \ | awk '/tag_name/{print $4;exit}' FS='[""]'); \ fi \ && curl -o \ /usr/bin/kepubify -L \ https://github.com/pgaskin/kepubify/releases/download/${KEPUBIFY_RELEASE}/kepubify-linux-64bit \ && chmod +x /usr/bin/kepubify # ports and volumes EXPOSE 8083 VOLUME /config VOLUME /books ENV PUID=1000 ENV PGID=1000 ENV TZ=Europe/Paris RUN \ echo "**** Setting timezone ****" \ && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \ && echo $TZ > /etc/timezone RUN mkdir -p /config \ && chown -R ${PUID}:${PGID} /config USER ${PUID}:${PGID} CMD /app/bin/python3 /app/lib/python3.12/site-packages/calibreweb/cps.py -p /config/app.db -g /config/gdrive.db -o /config/calibre-web.log