## OP25 Core Container FROM ubuntu:24.04 # Set environment variables ENV DEBIAN_FRONTEND=noninteractive # Install system dependencies RUN apt-get update && \ apt-get upgrade -y && \ apt-get install git python3 python3-pip pulseaudio pulseaudio-utils liquidsoap # Clone the boatbod op25 repository RUN git clone -b gr310 https://github.com/boatbod/op25 /op25 # Set the working directory WORKDIR /op25 # Run the install script to set up op25 RUN ./install.sh -f # Install Python dependencies COPY requirements.txt /tmp/requirements.txt RUN pip3 install --no-cache-dir -r /tmp/requirements.txt # Create the run_multi-rx_service.sh script RUN echo "#!/bin/bash\n./multi_rx.py -v 1 -c /configs/active.cfg.json" > ./op25/gr-op25_repeater/apps/run_multi-rx_service.sh && \ chmod +x ./op25/gr-op25_repeater/apps/run_multi-rx_service.sh # Expose ports for HTTP control as needed, for example: EXPOSE 8001 8081 # Create and set up the configuration directory VOLUME ["/configs"] # Set the working directory in the container WORKDIR /app # Copy the rest of the directory contents into the container at /app COPY ./app /app # 1. Copy the wrapper script and make it executable COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh # 2. Update ENTRYPOINT to use the wrapper script ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] # 3. Use CMD to pass the uvicorn command as arguments to the ENTRYPOINT script CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8001", "--reload"]