mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-04-19 11:11:18 +00:00
Add: unoserver and more (#3108)
# Description of Changes Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details.
This commit is contained in:
parent
aee8b8e5c6
commit
57188e7161
@ -8,11 +8,29 @@
|
|||||||
// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
|
// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
|
||||||
"dockerfile": "../Dockerfile.dev"
|
"dockerfile": "../Dockerfile.dev"
|
||||||
},
|
},
|
||||||
|
"runArgs": [
|
||||||
|
"-e",
|
||||||
|
"GIT_EDITOR=code --wait",
|
||||||
|
"--security-opt",
|
||||||
|
"label=disable"
|
||||||
|
],
|
||||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
"appPort": [8080],
|
"forwardPorts": [8080, 2002, 2003],
|
||||||
|
"portsAttributes": {
|
||||||
|
"8080": {
|
||||||
|
"label": "Stirling-PDF Dev Port"
|
||||||
|
},
|
||||||
|
"2002": {
|
||||||
|
"label": "unoserver Port"
|
||||||
|
},
|
||||||
|
"2003": {
|
||||||
|
"label": "UnoConvert Port"
|
||||||
|
}
|
||||||
|
},
|
||||||
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",
|
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",
|
||||||
"mounts": [
|
"mounts": [
|
||||||
"source=logs-volume,target=/workspace/logs,type=volume"
|
"source=logs-volume,target=/workspace/logs,type=volume",
|
||||||
|
"source=build-volume,target=/workspace/build,type=volume"
|
||||||
],
|
],
|
||||||
"workspaceFolder": "/workspace",
|
"workspaceFolder": "/workspace",
|
||||||
// Configure tool-specific properties.
|
// Configure tool-specific properties.
|
||||||
@ -97,18 +115,17 @@
|
|||||||
"Oracle.oracle-java", // Oracle Java extension with additional features for Java development
|
"Oracle.oracle-java", // Oracle Java extension with additional features for Java development
|
||||||
"streetsidesoftware.code-spell-checker", // Spell checker for code to avoid typos
|
"streetsidesoftware.code-spell-checker", // Spell checker for code to avoid typos
|
||||||
"vmware.vscode-boot-dev-pack", // Developer tools for Spring Boot by VMware
|
"vmware.vscode-boot-dev-pack", // Developer tools for Spring Boot by VMware
|
||||||
"vmware.vscode-spring-boot", // Spring Boot tools by VMware for enhanced Spring development
|
|
||||||
"vscjava.vscode-java-pack", // Java Extension Pack with essential Java tools for VS Code
|
"vscjava.vscode-java-pack", // Java Extension Pack with essential Java tools for VS Code
|
||||||
"vscjava.vscode-spring-boot-dashboard", // Spring Boot dashboard for managing and visualizing Spring Boot applications
|
|
||||||
"vscjava.vscode-spring-initializr", // Support for Spring Initializr to create new Spring projects
|
|
||||||
"EditorConfig.EditorConfig", // EditorConfig support for maintaining consistent coding styles
|
"EditorConfig.EditorConfig", // EditorConfig support for maintaining consistent coding styles
|
||||||
"ms-azuretools.vscode-docker", // Docker extension for Visual Studio Code
|
"ms-azuretools.vscode-docker", // Docker extension for Visual Studio Code
|
||||||
"charliermarsh.ruff" // Ruff extension for Ruff language support
|
"charliermarsh.ruff", // Ruff extension for Ruff language support
|
||||||
|
"github.vscode-github-actions" // GitHub Actions extension for Visual Studio Code
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.
|
// Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.
|
||||||
"remoteUser": "devuser",
|
"remoteUser": "devuser",
|
||||||
"shutdownAction": "stopContainer",
|
"shutdownAction": "stopContainer",
|
||||||
"postStartCommand": "./scripts/init-setup.sh"
|
"initializeCommand": "bash ./.devcontainer/git-init.sh",
|
||||||
|
"postStartCommand": "./.devcontainer/init-setup.sh"
|
||||||
}
|
}
|
||||||
|
19
.devcontainer/git-init.sh
Normal file
19
.devcontainer/git-init.sh
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
GIT_USER=$(git config --get user.name)
|
||||||
|
GIT_EMAIL=$(git config --get user.email)
|
||||||
|
|
||||||
|
# Exit if GIT_USER or GIT_EMAIL is empty
|
||||||
|
if [ -z "$GIT_USER" ] || [ -z "$GIT_EMAIL" ]; then
|
||||||
|
echo "GIT_USER or GIT_EMAIL is not set. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git config --local user.name "$GIT_USER"
|
||||||
|
git config --local user.email "$GIT_EMAIL"
|
||||||
|
|
||||||
|
# This directory should contain custom Git hooks for the repository
|
||||||
|
# Set the path for Git hooks to /workspace/hooks
|
||||||
|
git config --local core.hooksPath '%(prefix)/workspace/hooks'
|
||||||
|
# Set the safe directory to the workspace path
|
||||||
|
git config --local --add safe.directory /workspace
|
75
.devcontainer/init-setup.sh
Normal file
75
.devcontainer/init-setup.sh
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Dev Container Initialization Script (init-setup.sh)
|
||||||
|
#
|
||||||
|
# This script runs when the Dev Container starts and provides guidance on
|
||||||
|
# how to interact with the project. It prints an ASCII logo, displays the
|
||||||
|
# current user, changes to the project root, and then shows helpful command
|
||||||
|
# instructions.
|
||||||
|
#
|
||||||
|
# Instructions for future developers:
|
||||||
|
#
|
||||||
|
# - To start the application, use:
|
||||||
|
# ./gradlew bootRun --no-daemon -Dspring-boot.run.fork=true -Dserver.address=0.0.0.0
|
||||||
|
#
|
||||||
|
# - To run tests, use:
|
||||||
|
# ./gradlew test
|
||||||
|
#
|
||||||
|
# - To build the project, use:
|
||||||
|
# ./gradlew build
|
||||||
|
#
|
||||||
|
# - For running pre-commit hooks (if configured), use:
|
||||||
|
# pre-commit run --all-files
|
||||||
|
#
|
||||||
|
# Make sure you are in the project root directory after this script executes.
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
echo "Devcontainer started successfully!"
|
||||||
|
|
||||||
|
VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}')
|
||||||
|
GRADLE_VERSION=$(gradle -version | grep "^Gradle " | awk '{print $2}')
|
||||||
|
GRADLE_PATH=$(which gradle)
|
||||||
|
JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
|
||||||
|
JAVA_PATH=$(which java)
|
||||||
|
|
||||||
|
echo """
|
||||||
|
____ _____ ___ ____ _ ___ _ _ ____ ____ ____ _____
|
||||||
|
/ ___|_ _|_ _| _ \| | |_ _| \ | |/ ___| | _ \| _ \| ___|
|
||||||
|
\___ \ | | | || |_) | | | || \| | | _ _____| |_) | | | | |_
|
||||||
|
___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _|
|
||||||
|
|____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_|
|
||||||
|
"""
|
||||||
|
echo -e "Stirling-PDF Version: \e[32m$VERSION\e[0m"
|
||||||
|
echo -e "Gradle Version: \e[32m$GRADLE_VERSION\e[0m"
|
||||||
|
echo -e "Gradle Path: \e[32m$GRADLE_PATH\e[0m"
|
||||||
|
echo -e "Java Version: \e[32m$JAVA_VERSION\e[0m"
|
||||||
|
echo -e "Java Path: \e[32m$JAVA_PATH\e[0m"
|
||||||
|
|
||||||
|
# Display current active user (for permission/debugging purposes)
|
||||||
|
echo -e "Current user: \e[32m$(whoami)\e[0m"
|
||||||
|
|
||||||
|
# Change directory to the project root (parent directory of the script)
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
echo -e "Changed to project root: \e[32m$(pwd)\e[0m"
|
||||||
|
|
||||||
|
# Display available commands for developers
|
||||||
|
echo "=================================================================="
|
||||||
|
echo "Available commands:"
|
||||||
|
echo ""
|
||||||
|
echo " To start unoserver: "
|
||||||
|
echo -e "\e[34m nohup /opt/venv/bin/unoserver --port 2003 --interface 0.0.0.0 > /tmp/unoserver.log 2>&1 &\e[0m"
|
||||||
|
echo
|
||||||
|
echo " To start the application: "
|
||||||
|
echo -e "\e[34m gradle bootRun\e[0m"
|
||||||
|
echo ""
|
||||||
|
echo " To run tests: "
|
||||||
|
echo -e "\e[34m gradle test\e[0m"
|
||||||
|
echo ""
|
||||||
|
echo " To build the project: "
|
||||||
|
echo -e "\e[34m gradle build\e[0m"
|
||||||
|
echo ""
|
||||||
|
echo " To run pre-commit hooks (if configured):"
|
||||||
|
echo -e "\e[34m pre-commit run --all-files -c .pre-commit-config.yaml\e[0m"
|
||||||
|
echo "=================================================================="
|
@ -1,53 +1,54 @@
|
|||||||
# dockerfile.dev
|
# dockerfile.dev
|
||||||
|
|
||||||
# Basisimage: Gradle mit JDK 17 (Debian-basiert)
|
# Basisimage: Gradle mit JDK 17 (Debian-basiert)
|
||||||
FROM gradle:8.12-jdk17
|
FROM gradle:8.13-jdk17
|
||||||
|
|
||||||
# Als Root-Benutzer arbeiten, um benötigte Pakete zu installieren
|
# Als Root-Benutzer arbeiten, um benötigte Pakete zu installieren
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
# Set GRADLE_HOME und füge Gradle zum PATH hinzu
|
||||||
|
ENV GRADLE_HOME=/opt/gradle
|
||||||
|
ENV PATH="$GRADLE_HOME/bin:$PATH"
|
||||||
|
|
||||||
# Update und Installation zusätzlicher Pakete (Debian/Ubuntu-basiert)
|
# Update und Installation zusätzlicher Pakete (Debian/Ubuntu-basiert)
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
wget \
|
sudo \
|
||||||
ca-certificates \
|
|
||||||
tzdata \
|
|
||||||
tini \
|
|
||||||
bash \
|
|
||||||
curl \
|
|
||||||
libreoffice \
|
libreoffice \
|
||||||
poppler-utils \
|
poppler-utils \
|
||||||
qpdf \
|
qpdf \
|
||||||
|
# settings.yml | tessdataDir: /usr/share/tesseract-ocr/5/tessdata
|
||||||
tesseract-ocr \
|
tesseract-ocr \
|
||||||
tesseract-ocr-eng \
|
tesseract-ocr-eng \
|
||||||
fonts-dejavu \
|
fonts-terminus fonts-dejavu fonts-font-awesome fonts-noto fonts-noto-core fonts-noto-cjk fonts-noto-extra fonts-liberation fonts-linuxlibertine \
|
||||||
fonts-noto \
|
python3-uno \
|
||||||
python3 \
|
|
||||||
python3-pip \
|
|
||||||
python3-venv \
|
python3-venv \
|
||||||
|
# ss -tln
|
||||||
|
iproute2 \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Setze die Environment Variable für setuptools
|
# Setze die Environment Variable für setuptools
|
||||||
ENV SETUPTOOLS_USE_DISTUTILS=local
|
ENV SETUPTOOLS_USE_DISTUTILS=local
|
||||||
|
|
||||||
# Installation der benötigten Python-Pakete
|
# Installation der benötigten Python-Pakete
|
||||||
RUN python3 -m venv /opt/venv \
|
RUN python3 -m venv --system-site-packages /opt/venv \
|
||||||
&& . /opt/venv/bin/activate \
|
&& . /opt/venv/bin/activate \
|
||||||
&& pip install --upgrade setuptools \
|
|
||||||
&& pip install --no-cache-dir WeasyPrint pdf2image pillow unoserver opencv-python-headless pre-commit
|
&& pip install --no-cache-dir WeasyPrint pdf2image pillow unoserver opencv-python-headless pre-commit
|
||||||
|
|
||||||
# Füge den venv-Pfad zur globalen PATH-Variable hinzu, damit die Tools verfügbar sind
|
# Füge den venv-Pfad zur globalen PATH-Variable hinzu, damit die Tools verfügbar sind
|
||||||
ENV PATH="/opt/venv/bin:$PATH"
|
ENV PATH="/opt/venv/bin:$PATH"
|
||||||
|
|
||||||
# Erstelle notwendige Verzeichnisse und lege einen Nicht‑Root Benutzer an
|
COPY . /workspace
|
||||||
RUN mkdir -p /home/devuser/{configs,logs,customFiles,pipeline/watchedFolders,pipeline/finishedFolders} \
|
|
||||||
&& adduser --disabled-password --gecos '' devuser \
|
|
||||||
&& chown -R devuser:devuser /home/devuser
|
|
||||||
|
|
||||||
RUN mkdir -p /home/devuser/logs /workspace/logs /workspace/scripts /workspace/src/main/resources \
|
RUN adduser --disabled-password --gecos '' devuser \
|
||||||
&& chown -R devuser:devuser /home/devuser /workspace
|
&& chown -R devuser:devuser /home/devuser /workspace
|
||||||
|
RUN echo "devuser ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/devuser \
|
||||||
|
&& chmod 0440 /etc/sudoers.d/devuser
|
||||||
|
|
||||||
# Setze das Arbeitsverzeichnis (wird später per Bind-Mount überschrieben)
|
# Setze das Arbeitsverzeichnis (wird später per Bind-Mount überschrieben)
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
RUN chmod +x /workspace/.devcontainer/git-init.sh
|
||||||
|
RUN sudo chmod +x /workspace/.devcontainer/init-setup.sh
|
||||||
|
|
||||||
# Wechsel zum Nicht‑Root Benutzer
|
# Wechsel zum Nicht‑Root Benutzer
|
||||||
USER devuser
|
USER devuser
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
whoami
|
|
||||||
|
|
||||||
cd "$(dirname "$0")/.."
|
|
||||||
|
|
||||||
echo "Devcontainer started..."
|
|
Loading…
x
Reference in New Issue
Block a user