Install czkawka via download in dockerfile + fix uvicorn dependency
Some checks failed
gitea/file-organizer/pipeline/head There was a failure building this commit

This commit is contained in:
Jose134 2025-02-02 01:43:43 +01:00
parent 8ab7746a3f
commit d88e65e002
6 changed files with 31 additions and 22 deletions

4
.gitignore vendored
View File

@ -160,7 +160,3 @@ cython_debug/
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
vendor/czkawka/*
vendor/ffmpeg/*

View File

@ -14,16 +14,21 @@ RUN pip install --no-cache-dir -r requirements.txt
RUN pip install gunicorn
# Copy the FastAPI project files into the container
COPY . .
COPY src/ .
COPY entrypoint.sh .
# Copy the czkawka binary into the container
COPY vendor/czkawka /bin/
# Give execute permissions to the entrypoint script
RUN chmod +x entrypoint.sh
# Install ffmpeg with ffprobe
RUN apt-get update && apt-get install -y ffmpeg
# Copy the patterns.txt file into the container
COPY config/patterns.txt /config/patterns.txt
# Install binary dependencies
RUN apt-get update && apt-get install -y wget ffmpeg
RUN wget -O /usr/local/bin/czkawka https://github.com/qarmin/czkawka/releases/download/8.0.0/linux_czkawka_cli
RUN chmod +x /usr/local/bin/czkawka
# Expose the port the app runs on
EXPOSE 8000
# Command to run the FastAPI app using gunicorn with uvicorn workers
CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "main:app", "--bind", "0.0.0.0:8000"]
ENTRYPOINT ["./entrypoint.sh"]

14
entrypoint.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# Create user and group using UID and GID from docker run command
useradd -u $UID -o -m user
groupadd -g $GID -o group
# assign user to group
usermod -aG group user
# switch to user
su user
# launch the application
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000

View File

@ -1,3 +1,5 @@
requests
python-dotenv
fastapi
uvicorn
pytest ; extra == 'dev'

View File

@ -10,15 +10,7 @@ class CZKAWKA_DELETION_METHOD(Enum):
NONE="NONE"
def deduplicate_files(target_dir, exclude_files):
executables = {
"linux": "linux_czkawka_cli",
"win32": "windows_czkawka_cli.exe",
"darwin": "mac_czkawka_cli",
"docker": "linux_czkawka_cli"
}
platform = "docker" if os.path.exists("/.dockerenv") else os.sys.platform
czkawka_executable = executables.get(platform, "czkawka_cli")
czkawka_executable = "czkawka"
czkawka_deletion_method = CZKAWKA_DELETION_METHOD.ALL_EXCEPT_SMALLEST
czkawka_tolerance = os.environ.get("CK_DUPLICATE_TOLERANCE", "2")
_remove_duplicates(czkawka_executable, target_dir, exclude_files, czkawka_deletion_method, czkawka_tolerance)

View File

@ -7,9 +7,9 @@ from qbittorrent_api import get_qbittorrent_files_downloading
from filemoving import group_files_by_prefix
from deduplication import deduplicate_files
import uuid
import time
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
load_dotenv()