87 lines
2.4 KiB
Docker
87 lines
2.4 KiB
Docker
FROM ubuntu:latest
|
|
|
|
# Configurar el entorno para instalación sin interacción
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Crear usuario y grupo icecast2 (sin privilegios)
|
|
RUN useradd -m -d /home/icecast2 -s /bin/bash icecast2
|
|
|
|
# Instalar dependencias del sistema
|
|
RUN apt update && apt install -y --no-install-recommends \
|
|
python3 python3-pip ffmpeg liquidsoap icecast2 socat curl gettext vim\
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Descargar e instalar la última versión de yt-dlp manualmente
|
|
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/download/2025.03.27/yt-dlp_linux -o /usr/local/bin/yt-dlp \
|
|
&& chmod a+rx /usr/local/bin/yt-dlp
|
|
|
|
# Crear carpetas necesarias y dar permisos adecuados
|
|
RUN mkdir -p \
|
|
/config \
|
|
/var/lib/radio-data \
|
|
/usr/local/icecast/logs \
|
|
/app \
|
|
/var/log/liquidsoap \
|
|
/var/lib/bot \
|
|
&& chown -R icecast2:icecast2 \
|
|
/config \
|
|
/var/lib/radio-data \
|
|
/usr/local/icecast/logs \
|
|
/app \
|
|
/var/log/liquidsoap \
|
|
/var/lib/bot \
|
|
&& chmod -R 755 \
|
|
/config \
|
|
/var/lib/radio-data \
|
|
/usr/local/icecast/logs \
|
|
/app \
|
|
/var/log/liquidsoap \
|
|
/var/lib/bot
|
|
|
|
RUN for f in /etc/icecast2/web/*.xsl; do \
|
|
realpath=$(realpath "$f"); \
|
|
dest="/usr/share/icecast2/web/$(basename "$f")"; \
|
|
if [ "$(realpath "$dest")" = "$realpath" ]; then \
|
|
echo "Skipping $f, already points to real file"; \
|
|
else \
|
|
cp "$realpath" "$dest"; \
|
|
fi; \
|
|
done && \
|
|
chmod -R a+rX /usr/share/icecast2/web
|
|
|
|
|
|
RUN mkdir -p /var/lib/radio-data/music /var/lib/radio && \
|
|
ln -sf /var/lib/radio-data/music /var/lib/radio/music
|
|
|
|
# Copiar y instalar dependencias de Python
|
|
COPY requirements.txt /app/requirements.txt
|
|
RUN pip install --no-cache-dir --break-system-packages -r /app/requirements.txt
|
|
|
|
# Copiar configuraciones al contenedor
|
|
COPY config/icecast.xml /config/icecast.xml
|
|
COPY config/liquidsoap.liq /config/liquidsoap.liq
|
|
COPY config/entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# Copiar el bot y sus plugins
|
|
COPY bot.py /app/bot.py
|
|
COPY plugins /app/plugins
|
|
|
|
# Definir directorio de trabajo
|
|
WORKDIR /app
|
|
|
|
# Crear directorio para el socket y asignar permisos correctos
|
|
RUN mkdir -p /run/liquidsoap && \
|
|
chown -R icecast2:icecast2 /run/liquidsoap && \
|
|
chmod 777 /run/liquidsoap
|
|
|
|
# Cambiar a usuario sin privilegios
|
|
USER icecast2
|
|
|
|
# Exponer puertos necesarios para Icecast
|
|
EXPOSE 8000
|
|
|
|
# Ejecutar el entrypoint
|
|
CMD ["sh", "/entrypoint.sh"]
|
|
|