Compare commits

...

31 Commits

Author SHA1 Message Date
Anthony Stirling
d21efcf64b Update Dockerfile2 2025-02-10 10:21:23 +00:00
Anthony Stirling
4fdc02681d Merge remote-tracking branch 'origin/main' into digitalOcean 2025-02-10 10:12:48 +00:00
Anthony Stirling
2d4970ce55 Update Dockerfile2 2025-02-10 10:07:16 +00:00
Anthony Stirling
3853ad2400 Update deploy.template.yaml 2024-02-02 21:47:23 +00:00
Anthony Stirling
509229fd6a Update Dockerfile2 2024-02-02 21:47:11 +00:00
Anthony Stirling
5c430ee6be Update Dockerfile2 2023-12-30 00:35:44 +00:00
Anthony Stirling
748c2813eb Update Dockerfile2 2023-12-26 19:14:45 +00:00
Anthony Stirling
1e2d884e93 Update Dockerfile2 2023-12-26 19:09:41 +00:00
Anthony Stirling
5005f751a1 Update Dockerfile2 2023-12-26 18:07:27 +00:00
Anthony Stirling
c7158ab969 digital ocean update 2023-12-25 20:55:55 +00:00
Anthony Stirling
15b9f99c2e Merge remote-tracking branch 'origin/main' into digitalOcean 2023-12-25 20:51:56 +00:00
Anthony Stirling
d3731d2cf6 Update README.md 2023-07-29 14:30:42 +01:00
Anthony Stirling
89cc0b54cc Update README.md 2023-07-29 14:30:34 +01:00
Anthony Stirling
5c2618b14a Update README.md 2023-07-29 14:30:21 +01:00
Anthony Stirling
8ae03535af Update README.md 2023-07-29 14:30:07 +01:00
Anthony Stirling
3dee3a8d30 Update deploy.template.yaml 2023-07-29 14:06:21 +01:00
Anthony Stirling
81c7b59562 Rename Dockerfile-do to Dockerfile2 2023-07-29 14:06:09 +01:00
Anthony Stirling
72df9b4bea Update README.md 2023-07-29 13:54:08 +01:00
Anthony Stirling
1e1e03e6cb Update Dockerfile-do 2023-07-29 13:28:14 +01:00
Anthony Stirling
d86c1820df Update README.md 2023-07-29 13:05:04 +01:00
Anthony Stirling
930242c68b Update README.md 2023-07-29 12:56:44 +01:00
Anthony Stirling
17cdd3a887 Update README.md 2023-07-29 10:41:00 +01:00
Anthony Stirling
6b1991a26d Update README.md 2023-07-29 10:39:08 +01:00
Anthony Stirling
0c488e960e Update Dockerfile-do 2023-07-29 00:51:28 +01:00
Anthony Stirling
79358ed60d Update Dockerfile-do 2023-07-29 00:41:00 +01:00
Anthony Stirling
7c28828cfe Update deploy.template.yaml 2023-07-29 00:37:14 +01:00
Anthony Stirling
57bcb08bac Create Dockerfile-do 2023-07-29 00:36:49 +01:00
Anthony Stirling
c26eadedf2 Update deploy.template.yaml 2023-07-29 00:22:57 +01:00
Anthony Stirling
376d09d6e3 Update deploy.template.yaml 2023-07-29 00:22:30 +01:00
Anthony Stirling
a7322727b6 Update deploy.template.yaml 2023-07-29 00:22:02 +01:00
Anthony Stirling
5e064f4b6b Create deploy.template.yaml 2023-07-29 00:20:20 +01:00
2 changed files with 137 additions and 0 deletions

29
.do/deploy.template.yaml Normal file
View File

@@ -0,0 +1,29 @@
spec:
name: stirling-pdf
services:
- name: stirling-pdf
git:
branch: digitalOcean
repo_clone_url: https://github.com/Stirling-Tools/Stirling-PDF.git
dockerfile_path: Dockerfile2
envs:
- key: APP_HOME_NAME
value: "Stirling PDF"
- key: APP_HOME_DESCRIPTION
value: "Your locally hosted one-stop-shop for all your PDF needs."
- key: APP_NAVBAR_NAME
value: "Stirling PDF"
- key: ALLOW_GOOGLE_VISIBILITY
value: "false"
- key: APP_ROOT_PATH
value: "/"
- key: APP_LOCALE
value: "en_GB"
- key: TESSERACT_LANGS
value: "eng"
routes:
- path: /
http_port: 8080
instance_count: 1
instance_size_slug: basic-xxs
source_dir: "/"

108
Dockerfile2 Normal file
View File

@@ -0,0 +1,108 @@
# Intermediate stage for running dos2unix
FROM alpine:3.14 AS dos2unix-converter
# Install dos2unix
RUN apk add --no-cache dos2unix
# Copy script files
COPY ./scripts/* /dos2unix-scripts/
# Convert line endings
RUN dos2unix /dos2unix-scripts/*
# Build stage
FROM alpine:3.14 AS downloader
# Install necessary utilities
RUN apk add --no-cache curl jq
# Set work directory
WORKDIR /downloader
# Fetch the latest release jar from GitHub
RUN curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest \
| jq -r ".assets[] | select(.name == \"Stirling-PDF.jar\") | .browser_download_url" \
| xargs curl -L -o Stirling-PDF.jar
# Main stage
FROM alpine:3.21.2@sha256:56fa17d2a7e7f168a043a2712e63aed1f8543aeafdcee47c58dcffe38ed51099
# Copy necessary files
COPY scripts /scripts
COPY pipeline /pipeline
COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
# Copy the application JAR file from the download stage
COPY --from=downloader /downloader/Stirling-PDF.jar /app.jar
ARG VERSION_TAG
# Set Environment Variables
ENV DOCKER_ENABLE_SECURITY=false \
VERSION_TAG=$VERSION_TAG \
JAVA_TOOL_OPTIONS="-XX:+UnlockExperimentalVMOptions \
-XX:MaxRAMPercentage=75 \
-XX:InitiatingHeapOccupancyPercent=20 \
-XX:+G1PeriodicGCInvokesConcurrent \
-XX:G1PeriodicGCInterval=10000 \
-XX:+UseStringDeduplication \
-XX:G1PeriodicGCSystemLoadThreshold=70" \
HOME=/home/stirlingpdfuser \
PUID=1000 \
PGID=1000 \
UMASK=022 \
FAT_DOCKER=true \
INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
# JDK for app
RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \
echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
apk upgrade --no-cache -a && \
apk add --no-cache \
ca-certificates \
tzdata \
tini \
bash \
curl \
shadow \
su-exec \
openssl \
openssl-dev \
openjdk21-jre \
# Doc conversion
gcompat \
libc6-compat \
libreoffice \
# pdftohtml
poppler-utils \
# OCR MY PDF (unpaper for descew and other advanced featues)
qpdf \
tesseract-ocr-data-eng \
font-terminus font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra \
# CV
# py3-opencv \
# python3/pip
python3 \
py3-pip && \
# uno unoconv and HTML
pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint pdf2image pillow && \
mv /usr/share/tessdata /usr/share/tessdata-original && \
mkdir -p $HOME /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders && \
fc-cache -f -v && \
chmod +x /scripts/* && \
chmod +x /scripts/init.sh && \
# User permissions
addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \
chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \
chown stirlingpdfuser:stirlingpdfgroup /app.jar
EXPOSE 8080/tcp
# Set user and run command
ENTRYPOINT ["tini", "--", "/scripts/init.sh"]
CMD ["java", "-Dfile.encoding=UTF-8", "-jar", "/app.jar"]