mirror of
https://github.com/ciromattia/kcc
synced 2025-12-13 01:36:27 +00:00
165 lines
5.9 KiB
Plaintext
165 lines
5.9 KiB
Plaintext
FROM --platform=linux/amd64 python:3.13-slim-bullseye as compile-amd64
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
ARG TARGETVARIANT
|
|
RUN echo "I'm building for $TARGETOS/$TARGETARCH/$TARGETVARIANT"
|
|
|
|
|
|
COPY requirements.txt /opt/kcc/
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
|
apt-get install -y libpng-dev libjpeg-dev 7zip unrar-free libgl1 && \
|
|
python -m pip install --upgrade pip && \
|
|
python -m venv /opt/venv && \
|
|
python -m pip install -r /opt/kcc/requirements.txt
|
|
|
|
|
|
######################################################################################
|
|
|
|
FROM --platform=linux/arm64 python:3.13-slim-bullseye as compile-arm64
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
ARG TARGETVARIANT
|
|
RUN echo "I'm building for $TARGETOS/$TARGETARCH/$TARGETVARIANT"
|
|
|
|
ENV LC_ALL=C.UTF-8 \
|
|
LANG=C.UTF-8 \
|
|
LANGUAGE=en_US:en
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
COPY requirements.txt /opt/kcc/
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
RUN set -x && \
|
|
TEMP_PACKAGES=() && \
|
|
KEPT_PACKAGES=() && \
|
|
# Packages only required during build
|
|
TEMP_PACKAGES+=(build-essential) && \
|
|
TEMP_PACKAGES+=(cmake) && \
|
|
TEMP_PACKAGES+=(libfreetype6-dev) && \
|
|
TEMP_PACKAGES+=(libfontconfig1-dev) && \
|
|
TEMP_PACKAGES+=(libpng-dev) && \
|
|
TEMP_PACKAGES+=(libjpeg-dev) && \
|
|
TEMP_PACKAGES+=(libssl-dev) && \
|
|
TEMP_PACKAGES+=(libxft-dev) && \
|
|
TEMP_PACKAGES+=(make) && \
|
|
TEMP_PACKAGES+=(python3-dev) && \
|
|
TEMP_PACKAGES+=(python3-setuptools) && \
|
|
TEMP_PACKAGES+=(python3-wheel) && \
|
|
# Packages kept in the image
|
|
KEPT_PACKAGES+=(bash) && \
|
|
KEPT_PACKAGES+=(ca-certificates) && \
|
|
KEPT_PACKAGES+=(chrpath) && \
|
|
KEPT_PACKAGES+=(locales) && \
|
|
KEPT_PACKAGES+=(locales-all) && \
|
|
KEPT_PACKAGES+=(libfreetype6) && \
|
|
KEPT_PACKAGES+=(libfontconfig1) && \
|
|
KEPT_PACKAGES+=(7zip) && \
|
|
KEPT_PACKAGES+=(python3) && \
|
|
KEPT_PACKAGES+=(python3-pip) && \
|
|
KEPT_PACKAGES+=(unrar-free) && \
|
|
# Install packages
|
|
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
${KEPT_PACKAGES[@]} \
|
|
${TEMP_PACKAGES[@]} \
|
|
&& \
|
|
# Install required python modules
|
|
python -m pip install --upgrade pip && \
|
|
python -m venv /opt/venv && \
|
|
python -m pip install -r /opt/kcc/requirements.txt
|
|
|
|
|
|
######################################################################################
|
|
|
|
FROM --platform=linux/arm/v7 python:3.13-slim-bullseye as compile-armv7
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
ARG TARGETVARIANT
|
|
RUN echo "I'm building for $TARGETOS/$TARGETARCH/$TARGETVARIANT"
|
|
|
|
ENV LC_ALL=C.UTF-8 \
|
|
LANG=C.UTF-8 \
|
|
LANGUAGE=en_US:en
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
COPY requirements.txt /opt/kcc/
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
RUN set -x && \
|
|
TEMP_PACKAGES=() && \
|
|
KEPT_PACKAGES=() && \
|
|
# Packages only required during build
|
|
TEMP_PACKAGES+=(build-essential) && \
|
|
TEMP_PACKAGES+=(cmake) && \
|
|
TEMP_PACKAGES+=(libffi-dev) && \
|
|
TEMP_PACKAGES+=(libfreetype6-dev) && \
|
|
TEMP_PACKAGES+=(libfontconfig1-dev) && \
|
|
TEMP_PACKAGES+=(libpng-dev) && \
|
|
TEMP_PACKAGES+=(libjpeg-dev) && \
|
|
TEMP_PACKAGES+=(libssl-dev) && \
|
|
TEMP_PACKAGES+=(libxft-dev) && \
|
|
TEMP_PACKAGES+=(make) && \
|
|
TEMP_PACKAGES+=(python3-dev) && \
|
|
TEMP_PACKAGES+=(python3-setuptools) && \
|
|
TEMP_PACKAGES+=(python3-wheel) && \
|
|
# Packages kept in the image
|
|
KEPT_PACKAGES+=(bash) && \
|
|
KEPT_PACKAGES+=(ca-certificates) && \
|
|
KEPT_PACKAGES+=(chrpath) && \
|
|
KEPT_PACKAGES+=(locales) && \
|
|
KEPT_PACKAGES+=(locales-all) && \
|
|
KEPT_PACKAGES+=(libfreetype6) && \
|
|
KEPT_PACKAGES+=(libfontconfig1) && \
|
|
KEPT_PACKAGES+=(7zip) && \
|
|
KEPT_PACKAGES+=(python3) && \
|
|
KEPT_PACKAGES+=(python3-pip) && \
|
|
KEPT_PACKAGES+=(unrar-free) && \
|
|
# Install packages
|
|
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
${KEPT_PACKAGES[@]} \
|
|
${TEMP_PACKAGES[@]} \
|
|
&& \
|
|
# Install required python modules
|
|
python -m pip install --upgrade pip && \
|
|
python -m venv /opt/venv && \
|
|
python -m pip install --upgrade pillow psutil requests python-slugify raven packaging mozjpeg-lossless-optimization natsort distro numpy
|
|
|
|
|
|
######################################################################################
|
|
FROM --platform=linux/amd64 python:3.13-slim-bullseye as build-amd64
|
|
COPY --from=compile-amd64 /opt/venv /opt/venv
|
|
|
|
FROM --platform=linux/arm64 python:3.13-slim-bullseye as build-arm64
|
|
COPY --from=compile-arm64 /opt/venv /opt/venv
|
|
|
|
FROM --platform=linux/arm/v7 python:3.13-slim-bullseye as build-armv7
|
|
COPY --from=compile-armv7 /opt/venv /opt/venv
|
|
######################################################################################
|
|
|
|
# Select final stage based on TARGETARCH ARG
|
|
FROM build-${TARGETARCH}${TARGETVARIANT}
|
|
LABEL com.kcc.name="Kindle Comic Converter base image"
|
|
LABEL com.kcc.author="Ciro Mattia Gonano, Paweł Jastrzębski and Darodi"
|
|
LABEL org.opencontainers.image.description='Kindle Comic Converter base image'
|
|
LABEL org.opencontainers.image.documentation='https://github.com/ciromattia/kcc'
|
|
LABEL org.opencontainers.image.source='https://github.com/ciromattia/kcc'
|
|
LABEL org.opencontainers.image.authors='darodi'
|
|
LABEL org.opencontainers.image.url='https://github.com/ciromattia/kcc'
|
|
LABEL org.opencontainers.image.documentation='https://github.com/ciromattia/kcc'
|
|
LABEL org.opencontainers.image.vendor='ciromattia'
|
|
LABEL org.opencontainers.image.licenses='ISC'
|
|
LABEL org.opencontainers.image.title="Kindle Comic Converter"
|
|
|
|
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
WORKDIR /app
|
|
RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
|
apt-get install -y 7zip unrar-free && \
|
|
ln -s /app/kindlegen /bin/kindlegen && \
|
|
echo docker-base-20241116 > /IMAGE_VERSION
|
|
|