diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 index 5e162ba..36571ce 100644 --- a/docker/Dockerfile.amd64 +++ b/docker/Dockerfile.amd64 @@ -28,7 +28,6 @@ RUN \ /var/tmp/* -# copy files to container # copy files to container COPY docker/rootfs / COPY mangadlp/ /app/mangadlp/ diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 index dd205b0..6c59c0a 100644 --- a/docker/Dockerfile.arm64 +++ b/docker/Dockerfile.arm64 @@ -28,7 +28,6 @@ RUN \ /var/tmp/* -# copy files to container # copy files to container COPY docker/rootfs / COPY mangadlp/ /app/mangadlp/ diff --git a/docker/README.md b/docker/README.md index 2b75c93..e5ef57f 100644 --- a/docker/README.md +++ b/docker/README.md @@ -33,6 +33,8 @@ docker run -e PUID= -e PGID= ## Run commands in container +> You don't need to use the full path of manga-dlp.py because `/app` already is the working directory + You can simply use the `docker exec` command to run the scripts like normal. ```sh @@ -41,21 +43,42 @@ docker exec python3 manga-dlp.py ## Run your own schedule -The default config runs manga-dlp.py once a day at 03:00 and fetches every chapter of the mangas listed in the file -mangas.txt in the root directory of this repo. +The default config runs `manga-dlp.py` once a day at 12:00 and fetches every chapter of the mangas listed in the file +`mangas.txt` in the root directory of this repo. -To use your own schedule you need to mount (override) the default crontab or add new ones to the cron directory. +#### The default options used are: + +```sh +--read mangas.txt +--chapters all +--path /app/downloads +--wait 2 +``` + +To use your own schedule you need to mount (override) the default schedule or add new ones to the crontab. + +> Don't forget to add the cron entries for every new schedule ```yml # docker-compose.yml volumes: - - ./crontab:/etc/cron.d/01_mangadlp # overwrites the default one - - ./crontab2:/etc/cron.d/02_something # adds a new one + - ./crontab:/etc/cron.d/01_mangadlp # overwrites the default crontab + - ./crontab2:/etc/cron.d/02_something # adds a new one crontab file + - ./schedule1:/app/schedules/daily # overwrites the default schedule + - ./schedule2:/app/schedules/weekly # adds a new schedule ``` ```sh -docker run -v ./crontab:/etc/cron.d/01_mangadlp # overwrites the default one -docker run -v ./crontab2:/etc/cron.d/02_something # adds a new one +docker run -v ./crontab:/etc/cron.d/01_mangadlp # overwrites the default crontab +docker run -v ./crontab2:/etc/cron.d/02_something # adds a new one crontab file +docker run -v ./schedule1:/app/schedules/daily # overwrites the default schedule +docker run -v ./schedule2:/app/schedules/weekly # adds a new schedule +``` + +#### The default crontab file: + +```sh +0 12 * * * root /app/schedule > /proc/1/fd/1 2>&1 ``` ## Add mangas to mangas.txt @@ -77,15 +100,15 @@ docker run -v ./mangas.txt:/app/mangas.txt Per default as in the script, it downloads everything to "downloads" in the scripts root directory. This data does not persist with container recreation, so you need to mount it. This is already done in the quick start section. If you want -to change the path of the host, simply change `./media/mangas/` to a path of your choice. +to change the path of the host, simply change `./downloads/` to a path of your choice. ```yml # docker-compose.yml volumes: - - ./media/mangas/:/app/downloads + - ./downloads/:/app/downloads ``` ```sh -docker run -v ./media/mangas/:/app/downloads +docker run -v ./downloads/:/app/downloads ``` diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d6144ed..1b47ccb 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -12,6 +12,8 @@ services: volumes: - ./downloads/:/app/downloads/ # default manga download directory - ./mangas.txt:/app/mangas.txt # default file for manga links to download + #- ./crontab:/etc/cron.d/mangadlp # path to default crontab + #- ./schedule:/app/schedules/daily # path to the default schedule which is run daily environment: - TZ=Europe/Zurich # - PUID= # custom userid - defaults to 4444 diff --git a/docker/rootfs/app/schedules/daily b/docker/rootfs/app/schedules/daily new file mode 100755 index 0000000..d1f0620 --- /dev/null +++ b/docker/rootfs/app/schedules/daily @@ -0,0 +1,7 @@ +#!/bin/bash + +exec s6-setuidgid abc python3 /app/manga-dlp.py \ + --path /app/downloads \ + --read /app/mangas.txt \ + --chapters all \ + --wait 2 diff --git a/docker/rootfs/etc/cont-init.d/80-fix-perms b/docker/rootfs/etc/cont-init.d/80-fix-perms index 1ec425d..bddecbc 100644 --- a/docker/rootfs/etc/cont-init.d/80-fix-perms +++ b/docker/rootfs/etc/cont-init.d/80-fix-perms @@ -10,3 +10,6 @@ find '/app' -type 'f' \( -not -perm 664 -and -not -path '/app/downloads*' \) -ex find '/app' \( -not -user abc -and -not -path '/app/downloads*' \) -exec chown abc '{}' \+ find '/app' \( -not -group abc -and -not -path '/app/downloads*' \) -exec chown :abc '{}' \+ + +# fix schedules +chmod -R +x /app/schedules diff --git a/docker/rootfs/etc/cron.d/01_mangadlp b/docker/rootfs/etc/cron.d/01_mangadlp index 6225fb8..9b34dfb 100644 --- a/docker/rootfs/etc/cron.d/01_mangadlp +++ b/docker/rootfs/etc/cron.d/01_mangadlp @@ -1,5 +1,10 @@ +SHELL=/bin/bash +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + # default crontab to run manga-dlp once a day # and get all (new) chapters of the mangas in # the file mangas.txt +# "/proc/1/fd/1 2>&1" is to show the logs in the container + +0 12 * * * root /app/schedule > /proc/1/fd/1 2>&1 -0 3 * * * abc python3 /app/manga-dlp.py --read /app/mangas.txt -c all --wait 2