FROM python:3.11-bullseye # We don't want to run our application as root if it is not strictly necessary, even in a container. # Create a user and a group called 'app' to run the processes. RUN adduser app # Place the application components in a dir below the root dir COPY requirements.txt /app/requirements.txt # Make the directory the working directory for subsequent commands WORKDIR /app # Install from the requirements.txt we copied above RUN pip install -r requirements.txt # Download dbmate RUN mkdir /app/bin RUN curl -fsSL -o /app/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64 RUN chmod +x /app/bin/dbmate RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /app/bin/yt-dlp RUN chmod +x /app/bin/yt-dlp RUN apt-get update && \ apt-get -y --no-install-recommends install software-properties-common && \ add-apt-repository "deb http://httpredir.debian.org/debian testing main" && \ apt-get update && \ apt-get -t testing install -y --no-install-recommends python3 ffmpeg # Place the application components in a dir below the root dir COPY . /app # Hand everything over to the 'app' user RUN chown -R app:app /app # Subsequent commands, either in this Dockerfile or in a # docker-compose.yml, will run as user 'app' USER app # We are done with setting up the image. # As this image is used for different # purposes and processes no CMD or ENTRYPOINT is specified here, # this is done in docker-compose.yml. #RUN mkdir $HOME/.cache #RUN chown -R app:app $HOME/app RUN bin/dbmate up