FROM node:lts-buster USER root # Create app directory and set permissions RUN mkdir -p /app && chown -R node:node /app # Update sources.list to use archived repositories RUN sed -i 's/http:\/\/deb.debian.org/http:\/\/archive.debian.org/g' /etc/apt/sources.list \ && echo "Acquire::Check-Valid-Until false;" >> /etc/apt/apt.conf.d/99ignore-valid-until \ && apt-get update && apt-get install -y \ git \ ffmpeg \ imagemagick \ webp \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Set the working directory WORKDIR /app # Clone the private GitHub repository using the GitHub token from Docker BuildKit secrets RUN --mount=type=secret,id=GITHUB_REPO,required=true \ --mount=type=secret,id=GITHUB_TOKEN,required=true \ git clone https://$(cat /run/secrets/GITHUB_TOKEN)@github.com/$(cat /run/secrets/GITHUB_REPO).git . # Switch to the node user COPY --chown=node:node . . RUN mkdir -p /app/lib/database && chown -R node:node /app/lib # Set permissions for the /app directory to allow writing RUN chmod -R 777 /app RUN npm install -g npm@latest # Install dependencies RUN npm install node-cache RUN npm install || yarn install EXPOSE 7860 ENV NODE_ENV=production CMD ["npm", "start"]