Version 2.0.0 - update of everything
This commit is contained in:
85 files changed
+13065
-2107
No files matched your search
+34
-8
@@ -2,24 +2,50 @@ FROM node:lts-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Version du plugin PO token (bgutil) : doit correspondre à l'image du service bgutil-provider (docker-compose.yml)
|
||||
ARG BGUTIL_VERSION=2.0.1
|
||||
|
||||
# 1. Installer les dépendances système requises
|
||||
# python3 : indispensable pour faire tourner yt-dlp
|
||||
# ffmpeg : nécessaire pour certaines conversions audio ou formats spécifiques
|
||||
# curl : pour télécharger yt-dlp
|
||||
# python3 : indispensable pour faire tourner yt-dlp (version zipimport, auto-actualisable avec -U)
|
||||
# ffmpeg : seek YouTube (décodage du flux) et certains formats
|
||||
# curl : pour télécharger yt-dlp et le plugin bgutil
|
||||
RUN apk add --no-cache bash python3 ffmpeg curl
|
||||
|
||||
# 2. Installer yt-dlp (Dernière version officielle)
|
||||
# 2. Installer yt-dlp (dernière version officielle, build zipimport : inclut yt-dlp-ejs pour les défis JS)
|
||||
# On le place dans /usr/local/bin pour qu'il soit accessible globalement dans le PATH
|
||||
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && \
|
||||
RUN curl -fL https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && \
|
||||
chmod a+rx /usr/local/bin/yt-dlp
|
||||
|
||||
# 3. Installation des dépendances Node.js
|
||||
# 3. Plugin bgutil : yt-dlp obtient des PO tokens auprès du service bgutil-provider
|
||||
# (/etc/yt-dlp/plugins/ est lu par yt-dlp, les archives .zip y sont acceptées telles quelles)
|
||||
RUN mkdir -p /etc/yt-dlp/plugins && \
|
||||
curl -fL "https://github.com/Brainicism/bgutil-ytdlp-pot-provider/releases/download/${BGUTIL_VERSION}/bgutil-ytdlp-pot-provider.zip" \
|
||||
-o /etc/yt-dlp/plugins/bgutil-ytdlp-pot-provider.zip
|
||||
|
||||
# 4. Installation des dépendances Node.js
|
||||
# youtube-dl-exec téléchargerait un second yt-dlp (build glibc, inutilisable sous Alpine) : inutile, celui du PATH est utilisé
|
||||
ENV YOUTUBE_DL_SKIP_DOWNLOAD=true
|
||||
COPY package*.json ./
|
||||
RUN npm install
|
||||
|
||||
# 4. Copie du reste du code
|
||||
# 5. Copie du reste du code
|
||||
# Voir .dockerignore : node_modules (binaires Windows), data/ (token, cookies, comptes), logs/ et .git
|
||||
# ne sont PAS copiés dans l'image. data/ est fourni par le volume monté sur /app/data (docker-compose.yml) :
|
||||
# config.json doit y être déposé avant le premier démarrage, sinon le bot crée une config vide et s'arrête.
|
||||
# data/youtube/ (cookies YouTube, réglages, cache de yt-dlp) est créé au démarrage dans ce même volume.
|
||||
COPY . .
|
||||
# logs/ n'est plus copié : loguix crée son dossier de façon asynchrone et ouvre son fichier aussitôt,
|
||||
# le dossier doit donc exister au démarrage (même sans volume monté sur /app/logs)
|
||||
RUN mkdir -p /app/logs /app/data
|
||||
|
||||
EXPOSE 4000
|
||||
|
||||
# État de santé : route HTTP /health du serveur (port 4000, celui exposé ci-dessus)
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
|
||||
CMD wget -qO- http://127.0.0.1:4000/health > /dev/null || exit 1
|
||||
|
||||
# Mise à jour de yt-dlp à chaque démarrage : une version obsolète provoque des erreurs 403
|
||||
CMD ["sh", "-c", "yt-dlp -U || true; npm run start"]
|
||||
# (le bot la refait ensuite toutes les 24 h et après une série d'échecs, voir src/youtube/ytdlp.js)
|
||||
# exec : node remplace sh et devient PID 1 (il reçoit SIGTERM pour un arrêt propre).
|
||||
# Plus de nodemon en production : un crash termine le process et Docker relance le conteneur (restart: unless-stopped).
|
||||
CMD ["sh", "-c", "yt-dlp -U || true; exec node src/main.js"]
|
||||
Reference in new issue
Block a user