# Sử dụng image Go chính thức để lấy file thực thi (Tránh lỗi PPA trên Debian) FROM golang:1.23-bookworm AS golang-build FROM node:22-bookworm # 1. Copy Go từ image golang sang image node COPY --from=golang-build /usr/local/go/ /usr/local/go/ ENV PATH="/usr/local/go/bin:${PATH}" USER root # 2. Cài đặt các thư viện hệ thống và python3 RUN apt-get update && apt-get install -y \ git \ sudo \ build-essential \ python3 \ python3-pip \ curl \ ffmpeg \ pkg-config \ libssl-dev \ libcairo2-dev \ libpango1.0-dev \ libjpeg-dev \ libgif-dev \ librsvg2-dev \ libsqlite3-dev \ && rm -rf /var/lib/apt/lists/* # 3. Cài đặt yt-dlp bản mới nhất từ GitHub RUN curl -L 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 # Cho phép user node dùng sudo không password RUN echo "node ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers WORKDIR /home/node/app COPY start.sh /start.sh RUN chmod +x /start.sh RUN chown node:node /start.sh /home/node/app USER node # Kiểm tra các thành phần đã cài đặt RUN go version && yt-dlp --version EXPOSE 3030 CMD ["/start.sh"]