feat: add registry mirror for build #1
8 changed files with 106 additions and 103 deletions
20
.drone.yml
Normal file
20
.drone.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
kind: pipeline
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: docker
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: drone
|
||||
password:
|
||||
from_secret: maven_password
|
||||
repo: docker.nyyu.dev/nyyu/pyload-ng
|
||||
tags: latest
|
||||
registry: docker.nyyu.dev
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- main
|
||||
|
||||
image_pull_secrets:
|
||||
- dockerconfig
|
|
@ -1,31 +1,19 @@
|
|||
steps:
|
||||
build:
|
||||
image: woodpeckerci/plugin-kaniko
|
||||
pull: true
|
||||
settings:
|
||||
dry-run: true
|
||||
repo: ${CI_REPO_OWNER}/pyload-ng
|
||||
registry: ${DOCKER_REGISTRY}
|
||||
mirror: https://${DOCKER_REGISTRY}
|
||||
tags: latest
|
||||
build_args: VERSION=dev
|
||||
when:
|
||||
branch:
|
||||
exclude: ${CI_REPO_DEFAULT_BRANCH}
|
||||
event: [push, cron, tag, manual]
|
||||
push:
|
||||
image: woodpeckerci/plugin-kaniko
|
||||
pull: true
|
||||
pipeline:
|
||||
docker:
|
||||
image: woodpeckerci/plugin-docker-buildx
|
||||
settings:
|
||||
username:
|
||||
from_secret: registry_username
|
||||
password:
|
||||
from_secret: registry_password
|
||||
repo: ${CI_REPO_OWNER}/pyload-ng
|
||||
repo: ${DOCKER_REGISTRY}/${CI_REPO_OWNER}/pyload-ng
|
||||
registry: ${DOCKER_REGISTRY}
|
||||
mirror: https://${DOCKER_REGISTRY}
|
||||
tags: latest
|
||||
build_args: VERSION=dev
|
||||
when:
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
event: [push, cron, tag, manual]
|
||||
branch: main
|
||||
event:
|
||||
- push
|
||||
- cron
|
||||
- tag
|
||||
|
|
54
Dockerfile
54
Dockerfile
|
@ -1,38 +1,50 @@
|
|||
FROM python:3.13.5-alpine
|
||||
# set version label
|
||||
ARG VERSION \
|
||||
SEVENZIP_VERSION="24.09-r0"
|
||||
ENV PIP_NO_CACHE_DIR=false \
|
||||
PIP_ROOT_USER_ACTION=ignore
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.16
|
||||
|
||||
# add local files
|
||||
COPY root/ /
|
||||
# set version label
|
||||
ARG VERSION
|
||||
LABEL build_version="pyload docker version:- ${VERSION} Build-date:- $(date +'%F')"
|
||||
|
||||
ENV HOME="/config"
|
||||
|
||||
RUN \
|
||||
wget -q https://nexus.nyyu.dev/repository/files/alpine/7zip-${SEVENZIP_VERSION}.apk && \
|
||||
apk add --no-cache --allow-untrusted 7zip-${SEVENZIP_VERSION}.apk && \
|
||||
rm -f 7zip-${SEVENZIP_VERSION}.apk && \
|
||||
echo "**** install packages ****" && \
|
||||
echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && \
|
||||
echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
|
||||
echo "**** install build packages ****" && \
|
||||
apk add --no-cache --virtual=build-dependencies \
|
||||
gcc musl-dev \
|
||||
curl-dev && \
|
||||
build-base \
|
||||
curl-dev \
|
||||
libffi-dev \
|
||||
libjpeg-turbo-dev \
|
||||
openssl-dev \
|
||||
python3-dev \
|
||||
zlib-dev && \
|
||||
echo "**** install packages ****" && \
|
||||
apk add --no-cache \
|
||||
curl \
|
||||
ffmpeg \
|
||||
libjpeg-turbo \
|
||||
p7zip \
|
||||
py3-pip \
|
||||
python3 \
|
||||
sqlite \
|
||||
tesseract-ocr && \
|
||||
echo "**** install pyload ****" && \
|
||||
PYLOAD='https://github.com/pyload/pyload/archive/develop.zip#[all]' && \
|
||||
if [[ -n "${VERSION}" && "${VERSION}" != "dev" ]]; then \
|
||||
PYLOAD="pyload-ng[all]==${VERSION}"; \
|
||||
fi && \
|
||||
pip3 install -U "${PYLOAD}" && \
|
||||
rm -rf /usr/local/share/doc && \
|
||||
pip3 install -U pip setuptools wheel && \
|
||||
pip install -U --find-links https://wheel-index.linuxserver.io/alpine-3.16/ \
|
||||
"${PYLOAD}" && \
|
||||
echo "**** cleanup ****" && \
|
||||
apk del --purge \
|
||||
build-dependencies && \
|
||||
echo "**** add user abc ****" && \
|
||||
adduser -D -u 911 -h /config abc
|
||||
rm -rf \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
COPY root/ /
|
||||
|
||||
# ports and volumes
|
||||
EXPOSE 8000
|
||||
VOLUME /config /downloads
|
||||
|
||||
CMD ["/start.sh"]
|
||||
VOLUME /config
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["local>nyyu/renovate-config"]
|
||||
}
|
|
@ -1,68 +1,65 @@
|
|||
version: 2
|
||||
|
||||
general - "General":
|
||||
debug;trace;stack debug_level : "Debug level" = trace
|
||||
bool debug_mode : "Debug mode" = True
|
||||
bool folder_per_package : "Create folder for each package" = True
|
||||
en; language : "Language" = en
|
||||
int min_free_space : "Minimum free space in MiB" = 1024
|
||||
bool ssl_verify : "Verify SSL certificates" = True
|
||||
folder storage_folder : "Download folder" = /downloads
|
||||
folder storage_folder : "Download Folder" = /downloads
|
||||
bool debug_mode : "Debug Mode" = True
|
||||
debug;trace;stack debug_level : "Debug Level" = trace
|
||||
int min_free_space : "Min Free Space in MiB" = 1024
|
||||
bool folder_per_package : "Create folder for each package" = True
|
||||
permission - "Permissions":
|
||||
bool change_dl : "Change ownership of downloads" = False
|
||||
bool change_file : "Change permissions of downloads" = False
|
||||
bool change_group : "Change group of running process" = False
|
||||
bool change_user : "Change user of running process" = False
|
||||
str file : "Permission mode for downloaded files" = 0644
|
||||
str folder : "Permission mode for created folders" = 0755
|
||||
str group : "Groupname for ownership" = abc
|
||||
str user : "Username for ownership" = abc
|
||||
str user : "Username" = abc
|
||||
str folder : "Folder Permission mode" = 0755
|
||||
bool change_file : "Change file mode of downloads" = False
|
||||
str file : "Filemode for Downloads" = 0644
|
||||
bool change_group : "Change group of running process" = False
|
||||
str group : "Groupname" = abc
|
||||
bool change_dl : "Change Group and User of Downloads" = False
|
||||
download - "Download":
|
||||
int chunks : "Maximum connections for one download" = 3
|
||||
time end_time : "End time" = 0:00
|
||||
int chunks : "Max connections for one download" = 3
|
||||
int max_downloads : "Max Parallel Downloads" = 3
|
||||
int max_speed : "Max Download Speed in KiB/s" = -1
|
||||
bool limit_speed : "Limit Download Speed" = False
|
||||
ip interface : "Download interface to bind (IP Address)" =
|
||||
bool ipv6 : "Allow IPv6" = False
|
||||
bool limit_speed : "Limit download speed" = False
|
||||
int max_downloads : "Maximum parallel downloads" = 3
|
||||
int max_speed : "Maximum download speed in KiB/s" = -1
|
||||
bool skip_existing : "Skip already existing files" = False
|
||||
time start_time : "Start time" = 0:00
|
||||
time start_time : "Start" = 0:00
|
||||
time end_time : "End" = 0:00
|
||||
reconnect - "Reconnection":
|
||||
bool enabled : "Activated" = False
|
||||
time end_time : "End time" = 0:00
|
||||
str script : "Script" =
|
||||
time start_time : "Start time" = 0:00
|
||||
time start_time : "Start" = 0:00
|
||||
time end_time : "End" = 0:00
|
||||
webui - "Web Interface":
|
||||
bool autologin : "Skip login if single user" = False
|
||||
bool develop : "Development mode" = False
|
||||
bool enabled : "Activated" = True
|
||||
ip host : "IP address" = 0.0.0.0
|
||||
int port : "Port" = 8000
|
||||
str prefix : "Path prefix" =
|
||||
int session_lifetime : "Session lifetime (minutes)" = 44640
|
||||
file ssl_certchain : "CA's intermediate certificate bundle (optional)" =
|
||||
bool use_ssl : "Use HTTPS" = False
|
||||
bool develop : "Development mode" = False
|
||||
file ssl_certfile : "SSL Certificate" = ssl.crt
|
||||
file ssl_keyfile : "SSL Key" = ssl.key
|
||||
file ssl_certchain : "CA's intermediate certificate bundle (optional)" =
|
||||
ip host : "IP Address" = 0.0.0.0
|
||||
int port : "Port" = 8000
|
||||
Default;modern;pyplex theme : "Theme" = pyplex
|
||||
bool use_ssl : "Use HTTPS" = False
|
||||
bool autologin : "Skip login if single user" = False
|
||||
str prefix: "Path Prefix" =
|
||||
proxy - "Proxy":
|
||||
bool enabled : "Activated" = False
|
||||
ip host : "IP address" = localhost
|
||||
password password : "Password" =
|
||||
ip host : "IP Address" = localhost
|
||||
int port : "Port" = 7070
|
||||
bool socks_resolve_dns : "Enable DNS resolution through SOCKS proxy" = False
|
||||
http;https;socks4;socks5 type : "Protocol" = http
|
||||
http;socks4;socks5 type : "Protocol" = http
|
||||
str username : "Username" =
|
||||
password password : "Password" =
|
||||
log - "Log":
|
||||
bool console : "Print log to console" = True
|
||||
bool console_color : "Colorize console" = False
|
||||
bool filelog : "Save log to file" = True
|
||||
int filelog_entries : "Maximum log files" = 10
|
||||
folder filelog_folder : "Log file folder" =
|
||||
bool filelog_rotate : "Log rotate" = True
|
||||
int filelog_size : "Maximum file size (in KiB)" = 5120
|
||||
bool syslog : "Sent log to syslog" = False
|
||||
folder syslog_folder : "Syslog local folder" =
|
||||
ip syslog_host : "Syslog remote IP address" = localhost
|
||||
local;remote syslog_location : "Syslog location" = local
|
||||
int syslog_port : "Syslog remote port" = 514
|
||||
folder syslog_folder : "Syslog local folder" =
|
||||
ip syslog_host : "Syslog remote IP Address" = localhost
|
||||
int syslog_port : "Syslog remote Port" = 514
|
||||
bool filelog : "Save log to file" = True
|
||||
int filelog_size : "Max file size (in KiB)" = 5120
|
||||
folder filelog_folder : "File folder" =
|
||||
int filelog_entries : "Max log files" = 10
|
||||
bool filelog_rotate : "Log rotate" = True
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# create our folders
|
||||
mkdir -p \
|
||||
|
@ -16,4 +16,4 @@ echo "[cont-init.d] Setting permissions this may take some time"
|
|||
chown -R abc:abc \
|
||||
/config
|
||||
chown abc:abc \
|
||||
/downloads || true
|
||||
/downloads
|
||||
|
|
4
root/etc/services.d/pyload/run
Normal file
4
root/etc/services.d/pyload/run
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
|
||||
exec \
|
||||
s6-setuidgid abc pyload --userdir /config --storagedir /downloads
|
|
@ -1,14 +0,0 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
PUID=${PUID:-911}
|
||||
PGID=${PGID:-911}
|
||||
|
||||
sed -i "s/^\(abc:[^:]*:\)[0-9]*:/\1$PGID:/" /etc/group
|
||||
sed -i "s/^\(abc:[^:]*:\)[0-9]*:[0-9]*:/\1$PUID:$PGID:/" /etc/passwd
|
||||
|
||||
for f in /etc/cont-init.d/*; do
|
||||
sh "$f"
|
||||
done
|
||||
|
||||
exec su abc -c 'pyload --userdir /config --storagedir /downloads'
|
Loading…
Add table
Add a link
Reference in a new issue