|
|
|
|
|
FROM ubuntu:22.04
|
|
|
|
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
ENV LANG=ar_SA.UTF-8
|
|
|
ENV LC_ALL=ar_SA.UTF-8
|
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
|
|
ENV HOME=/tmp
|
|
|
ENV TMPDIR=/tmp
|
|
|
ENV XDG_CONFIG_HOME=/tmp/.config
|
|
|
|
|
|
ENV SAL_DISABLE_JAVA=1
|
|
|
ENV SAL_DISABLE_JAVA_SECURITY=1
|
|
|
ENV LIBO_DISABLE_JAVA=1
|
|
|
ENV UNO_PATH=/usr/lib/libreoffice/program
|
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
|
python3 \
|
|
|
python3-pip \
|
|
|
libreoffice \
|
|
|
libreoffice-writer \
|
|
|
libreoffice-l10n-ar \
|
|
|
|
|
|
fonts-liberation \
|
|
|
fonts-liberation2 \
|
|
|
fonts-dejavu \
|
|
|
fonts-dejavu-core \
|
|
|
fonts-dejavu-extra \
|
|
|
fonts-croscore \
|
|
|
fonts-noto-core \
|
|
|
fonts-noto-ui-core \
|
|
|
fonts-noto-mono \
|
|
|
fonts-noto-color-emoji \
|
|
|
|
|
|
fonts-noto-naskh-arabic \
|
|
|
fonts-noto-kufi-arabic \
|
|
|
fonts-hosny-amiri \
|
|
|
fontconfig \
|
|
|
wget \
|
|
|
curl \
|
|
|
unzip \
|
|
|
locales \
|
|
|
|
|
|
fonts-freefont-ttf \
|
|
|
|
|
|
unoconv \
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
|
RUN mkdir -p /usr/share/fonts/truetype/scheherazade \
|
|
|
&& wget -q https://github.com/google/fonts/raw/main/ofl/scheherazadenew/ScheherazadeNew-Regular.ttf -O /usr/share/fonts/truetype/scheherazade/ScheherazadeNew-Regular.ttf \
|
|
|
&& wget -q https://github.com/google/fonts/raw/main/ofl/scheherazadenew/ScheherazadeNew-Bold.ttf -O /usr/share/fonts/truetype/scheherazade/ScheherazadeNew-Bold.ttf \
|
|
|
&& fc-cache -fv
|
|
|
|
|
|
|
|
|
RUN locale-gen ar_SA.UTF-8
|
|
|
|
|
|
|
|
|
RUN fc-cache -fv
|
|
|
|
|
|
|
|
|
|
|
|
RUN mkdir -p /tmp/.config/libreoffice/4/user \
|
|
|
/usr/lib/libreoffice/share/fonts/truetype \
|
|
|
/usr/lib/libreoffice/share/fonts/type1 \
|
|
|
&& chmod -R 777 /tmp/.config \
|
|
|
&& chmod -R 777 /usr/lib/libreoffice/share/fonts || true
|
|
|
|
|
|
|
|
|
RUN echo '<?xml version="1.0" encoding="UTF-8"?>\
|
|
|
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\
|
|
|
<!-- Disable first start wizard and user installation -->\
|
|
|
<item oor:path="/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory['\''com.sun.star.comp.framework.ProtocolHandler'\'']">\
|
|
|
<prop oor:name="FirstStartWizardCompleted" oor:op="fuse">\
|
|
|
<value>true</value>\
|
|
|
</prop>\
|
|
|
</item>\
|
|
|
<!-- CRITICAL: Disable Java completely to prevent javaldx errors -->\
|
|
|
<item oor:path="/org.openoffice.Setup/Office">\
|
|
|
<prop oor:name="JavaSupport" oor:op="fuse">\
|
|
|
<value>false</value>\
|
|
|
</prop>\
|
|
|
</item>\
|
|
|
<!-- Disable Java security to prevent javaldx errors -->\
|
|
|
<item oor:path="/org.openoffice.Office.Java">\
|
|
|
<prop oor:name="Enabled" oor:op="fuse">\
|
|
|
<value>false</value>\
|
|
|
</prop>\
|
|
|
</item>\
|
|
|
</oor:items>' > /tmp/.config/libreoffice/4/user/registrymodifications.xcu \
|
|
|
&& chmod 666 /tmp/.config/libreoffice/4/user/registrymodifications.xcu
|
|
|
|
|
|
# Pre-initialize LibreOffice to avoid first-run errors - More comprehensive approach
|
|
|
# Run LibreOffice with specific flags to complete initial setup
|
|
|
# REMOVED --disable-java flag as it's not supported in LibreOffice 7.3.7.2
|
|
|
RUN HOME=/tmp timeout 30 libreoffice --headless --invisible --nologo --norestore --nofirststartwizard --safe-mode --version || true
|
|
|
|
|
|
# Set working directory
|
|
|
WORKDIR /app
|
|
|
|
|
|
# Copy requirements first to leverage Docker cache
|
|
|
COPY requirements.txt .
|
|
|
RUN pip3 install --no-cache-dir -r requirements.txt
|
|
|
|
|
|
# Create necessary directories with proper permissions
|
|
|
RUN mkdir -p /tmp/libreoffice_conversion /tmp/.config /tmp/fonts/truetype \
|
|
|
&& chmod -R 777 /tmp
|
|
|
|
|
|
# Create static directory
|
|
|
RUN mkdir -p static
|
|
|
|
|
|
# Copy all remaining files
|
|
|
COPY . .
|
|
|
|
|
|
# Setup additional Arabic fonts using Python script with proper permissions
|
|
|
# Use /tmp for font installation to avoid permission issues
|
|
|
RUN sed -i 's|/usr/share/fonts/truetype|/tmp/fonts/truetype|g' setup_fonts.py && \
|
|
|
mkdir -p /tmp/fonts/truetype/arabic-enhanced && \
|
|
|
chmod -R 777 /tmp/fonts/truetype && \
|
|
|
python3 setup_fonts.py || echo "Font setup failed, continuing with default fonts..."
|
|
|
|
|
|
# Update font cache after installing additional fonts
|
|
|
RUN fc-cache -fv
|
|
|
|
|
|
# REMOVED: Java paths and symbolic links that were causing javaldx errors
|
|
|
|
|
|
# Expose port (Hugging Face Spaces requires port 7860)
|
|
|
EXPOSE 7860
|
|
|
|
|
|
# Health check (Hugging Face Spaces requires port 7860)
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
|
CMD curl -f http://localhost:7860/health || exit 1
|
|
|
|
|
|
# Run the application
|
|
|
CMD ["python3", "main.py"] |